yumapro  21.10T-12
YumaPro SDK
obj.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2008 - 2012, Andy Bierman, All Rights Reserved.
3  * Copyright (c) 2012 - 2021, YumaWorks, Inc., All Rights Reserved.
4  *
5  * Unless required by applicable law or agreed to in writing,
6  * software distributed under the License is distributed on an
7  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8  * KIND, either express or implied. See the License for the
9  * specific language governing permissions and limitations
10  * under the License.
11  */
12 #ifndef _H_obj
13 #define _H_obj
14 
15 /* FILE: obj.h
16 *********************************************************************
17 * *
18 * P U R P O S E *
19 * *
20 *********************************************************************/
21 
27 /*********************************************************************
28 * *
29 * C H A N G E H I S T O R Y *
30 * *
31 *********************************************************************
32 
33 date init comment
34 ----------------------------------------------------------------------
35 09-dec-07 abb Begun
36 21jul08 abb start obj-based rewrite
37 
38 */
39 
40 #include <xmlstring.h>
41 #include <xmlregexp.h>
42 
43 #include "log.h"
44 #include "grp.h"
45 #include "ncxconst.h"
46 #include "ncxtypes.h"
47 #include "status.h"
48 #include "tk.h"
49 #include "rpc.h"
50 #include "typ.h"
51 #include "xmlns.h"
52 #include "xml_util.h"
53 
54 #ifdef __cplusplus
55 extern "C" {
56 #endif
57 
58 /********************************************************************
59 * *
60 * C O N S T A N T S *
61 * *
62 *********************************************************************/
63 
64 /* object pointer inside obj_key_t struct */
65 #define OBJ_KEYOBJ(KO) (KO)->keyobj
66 
67 /* default vaule for config statement */
68 #define OBJ_DEF_CONFIG TRUE
69 
70 /* default vaule for mandatory statement */
71 #define OBJ_DEF_MANDATORY FALSE
72 
73 /* number of static xpath backptrs to have in each object node */
74 /*** CHANGED FROM 4 to 2 23oct19 ***/
75 #define OBJ_NUM_XPATH_BACKPTRS 2
76 
77 /* each object can have a SIL callback priority 1..255 */
78 #define OBJ_DEF_SIL_PRIORITY 255
79 #define OBJ_MIN_SIL_PRIORITY 1
80 #define OBJ_MAX_SIL_PRIORITY 255
81 
82 
83 /********* flags field in obj_template_t *************/
84 
85 /* object is cloned from a grouping, for a uses statement */
86 #define OBJ_FL_CLONE bit0
87 
88 /* def is a CLI text block */
89 #define OBJ_FL_CLI_TEXT_BLOCK bit1
90 
91 /* clone source
92  * == 0 : cloned object from uses
93  * == 1 : cloned object from augment
94  */
95 #define OBJ_FL_AUGCLONE bit2
96 
97 /* object is marked for deletion -- dynamic flag */
98 #define OBJ_FL_DELETED bit3
99 
100 /* object is dirty in the candidate datastore; used by server only */
101 #define OBJ_FL_CDIRTY bit4
102 
103 /* object is a top-level definition within a module or submodule */
104 #define OBJ_FL_TOP bit5
105 
106 /* object was entered with a 'kw name;' format and is
107  * considered empty by the yangdump program
108  */
109 #define OBJ_FL_EMPTY bit6
110 
111 /* object has been visited by the yangdiff program */
112 #define OBJ_FL_SEEN bit7
113 
114 /* bit7 is reused in the server since the 'seen' bit only
115  * applies to the yangdiff-pro program
116  * object is dirty in the running datastore; used by server only
117  */
118 #define OBJ_FL_RDIRTY bit7
119 
120 /* object marked as changed by the yangdiff program */
121 #define OBJ_FL_DIFF bit8
122 
123 /* object is marked as ncx:hidden */
124 #define OBJ_FL_HIDDEN bit9
125 
126 /* object is marked as ncx:root */
127 #define OBJ_FL_ROOT bit10
128 
129 /* object is marked as a password */
130 #define OBJ_FL_PASSWD bit11
131 
132 /* object is marked as a CLI-only node */
133 #define OBJ_FL_CLI bit12
134 
135 /* object is marked as an XSD list data type */
136 #define OBJ_FL_XSDLIST bit13
137 
138 /* OBJ_TYP_LEAF object is being uses as a key */
139 #define OBJ_FL_KEY bit14
140 
141 /* object is marked as abstract: not CLI or config data */
142 #define OBJ_FL_ABSTRACT bit15
143 
144 /* object is marked as config set so OBJ_FL_CONFIG is valid */
145 #define OBJ_FL_CONFSET bit16
146 
147 /* object config value */
148 #define OBJ_FL_CONFIG bit17
149 
150 /* object is marked as mandatory set so OBJ_FL_MANDATORY is valid */
151 #define OBJ_FL_MANDSET bit18
152 
153 /* object mandatory value */
154 #define OBJ_FL_MANDATORY bit19
155 
156 /* object used in a unique-stmt within a list */
157 #define OBJ_FL_UNIQUE bit20
158 
159 /* object data type is an XPath string */
160 #define OBJ_FL_XPATH bit21
161 
162 /* object data type is a QName string */
163 #define OBJ_FL_QNAME bit22
164 
165 /* object data type is a schema-instance string */
166 #define OBJ_FL_SCHEMAINST bit23
167 
168 /* object is tagged ncx:secure */
169 #define OBJ_FL_SECURE bit24
170 
171 /* object is tagged ncx:very-secure */
172 #define OBJ_FL_VERY_SECURE bit25
173 
174 /* object is tagged ncx:default-parm-equals-ok */
175 #define OBJ_FL_CLI_EQUALS_OK bit26
176 
177 /* object is tagged ncx:sil-delete-children-first */
178 #define OBJ_FL_SIL_DELETE_CHILDREN_FIRST bit27
179 
180 /* object is tagged as ncx:user-write with no create access */
181 #define OBJ_FL_BLOCK_CREATE bit28
182 
183 /* object is tagged as ncx:user-write with no update access */
184 #define OBJ_FL_BLOCK_UPDATE bit29
185 
186 /* object is tagged as ncx:user-write with no delete access */
187 #define OBJ_FL_BLOCK_DELETE bit30
188 
189 /* object is tagged as ywx:rpc-root operation container */
190 #define OBJ_FL_RPC_ROOT bit31
191 
192 
193 /********* xflags field in obj_template_t *************/
194 
195 /* object is a default NP-container */
196 #define OBJ_FL_DEF_NPCON bit0
197 
198 /* object has been checked for enabled;
199  * this flag needs to be cleared if dynamic
200  * features are used and the feature becomes disabled!!!
201  */
202 #define OBJ_FL_ENABLED_CHK bit1
203 
204 /* indicates that the object is enabled, which just means
205  * any if-features statements for this object are true
206  */
207 #define OBJ_FL_ENABLED bit2
208 
209 /* indicates that this visible object has a visible sibling
210  * object with the same local-name but from another module
211  */
212 #define OBJ_FL_DUP_LOCAL bit3
213 
214 /* indicates that this object is an RPC operation that is
215  * not allowed to be called concurrently by multiple sessions
216  * at once
217  */
218 #define OBJ_FL_EXCLUSIVE_RPC bit4
219 
220 /* indicates that this object is has the sil-force-replay
221  * flag set
222  */
223 #define OBJ_FL_SIL_FORCE_REPLAY bit5
224 
225 /* indicates that this object is has the sil-force-replay
226  * flag set for a replace operation
227  */
228 #define OBJ_FL_SIL_FORCE_REPLACE_REPLAY bit6
229 
230 /* indicates that this object is an anyxml object that is
231  * really a ywx:datapath node. The object path-expr will
232  * be sent in XML instances of the object.
233  * (Like object Location header)
234  */
235 #define OBJ_FL_DATAPATH bit7
236 
237 /* indicates that is object has get2 callbacks registered
238  * either for 1 or more submodules. This flag is
239  * set and cleared dynamically so do not cache the value
240  */
241 #define OBJ_FL_REMOTE_GET2 bit8
242 
243 /* indicates the 'units' field has been replaced with
244  * a malloced string via deviations, could be a clone
245 */
246 #define OBJ_FL_FREE_UNITS bit9
247 
248 /* indicates the 'typdef' field has been replaced with
249  * a malloced struct via deviations, could be a clone
250 */
251 #define OBJ_FL_FREE_TYPDEF bit10
252 
253 
254 /* indicates the object uses the edit2 callback mode */
255 #define OBJ_FL_EDIT2_MODE bit11
256 
257 /* indicates that leafref validation has been disabled for the
258  * object. The leafref will be treated as if it had a
259  * require-instance false; sub-statement
260  */
261 #define OBJ_FL_SKIP_LEAFREF bit12
262 
263 /* indicates that the object yang_hash field contains
264  * the YANG HASH value for the node; hash can be zero
265  * so set this flag to make sure obj->yang_hash field is set
266  */
267 #define OBJ_FL_YANG_HASH bit13
268 
269 /* indicates that the object yang_hash field contains
270  * the rehashed value for the node because of a clash
271  */
272 #define OBJ_FL_YANG_REHASH bit14
273 
274 /* indicates that the cbset (callback set) is malloced
275  * and a simple m__free(cbset) is needed to clean up
276  */
277 #define OBJ_FL_CBSET_MALLOCED bit15
278 
279 /* indicates the object is 1 of the ncx generic templates */
280 #define OBJ_FL_GENERIC bit16
281 
282 /* indicates the object has defaults has been checked */
283 /* NOT USED */
284 #define OBJ_FL_DEF_DONE bit17
285 
286 /* indicates the object has defaults (valid if bit17 set) */
287 /* NOT USED */
288 #define OBJ_FL_DEF bit18
289 
290 /* indicates the object is an RPC that is OK for library mode */
291 #define OBJ_FL_LIBMODE bit19
292 
293 /* indicates the object contains a smiv2 object identifier */
294 #define OBJ_FL_SMIV2_OID bit20
295 
296 /* indicates object is tagged ywx:no-nvstore */
297 #define OBJ_FL_NO_NVSTORE bit21
298 
299 /* object is tagged ncx:no-sil-delete-children-first */
300 #define OBJ_FL_NO_SIL_DELETE_CHILDREN_FIRST bit22
301 
302 /* object is tagged as a source node in a yangmap nodemap */
303 #define OBJ_FL_YANGMAP_SOURCE bit23
304 
305 /* object is tagged as a target node in a yangmap nodemap */
306 #define OBJ_FL_YANGMAP_TARGET bit24
307 
308 /* object is tagged as a child node in a yangmap nodemap */
309 #define OBJ_FL_YANGMAP_CHILD bit25
310 
311 /* object is tagged as a keymap node in a yangmap nodemap */
312 #define OBJ_FL_YANGMAP_KEY bit26
313 
314 /* indicates that DUP_LOCAL test has been done */
315 #define OBJ_FL_DUP_LOCAL_DONE bit27
316 
317 /* This bit is set in the agt_val_silcall to indicate that the
318  * Transaction Hook is already setup for the object and that
319  * any consecutive attempts to assign the hook to this object
320  * should be skipped
321  */
322 #define OBJ_FL_TRANS_HOOK_SET bit29
323 
324 /* This bit is set to indicate that the sil-test-get-when
325  * override flag is set for the object which is expected
326  * to be an operational data node
327  */
328 #define OBJ_FL_GET_WHEN_SET bit30
329 
330 /* This bit is set to indicate the value of the
331  * override flag and is only used if OBJ_FL_GET_WHEN_SET
332  * bit is set to 1
333  */
334 #define OBJ_FL_GET_WHEN bit31
335 
336 
337 /********* xflags2 field in obj_template_t *************/
338  /* xflags2 is a continuation of xflags bits */
339 
340 /* This bit is set to indicate that the sil-aio-get2
341  * All in One extension flag is set for the object.
342  */
343 #define OBJ_FL_AIO_GET2 bit0
344 
345 /* This flag indicates that this object has All in One children
346  * But itself it does not have this extension setup.
347  * Will be set only if the current object is GET2 object with
348  * GET2 flags setup.
349  *
350  * GET2 object but not All in One object, but a parent of AIO
351  */
352 #define OBJ_FL_AIO_PARENT bit1
353 
354 /* This bit is set to indicate that the sil-aio-get2
355  * All in One extension flag is set for the object and has XML
356  * parameter setup.
357  */
358 #define OBJ_FL_AIO_GET2_XML bit2
359 
360 /* This bit is set to indicate that the sil-aio-get2
361  * All in One extension flag is set for the object and has JSON
362  * parameter setup.
363  */
364 #define OBJ_FL_AIO_GET2_JSON bit3
365 
366 /* This bit is set to check whether the object has Set Default
367  * Hook callback and should invoke it in order to set custom
368  * system default value BUT only if there is no any YANG defaults.
369  */
370 #define OBJ_FL_DEF_HOOK bit4
371 
372 /* This bit indicates that the leaf or leaf-list is really
373  * an openconfig-hashed-value string not a plain string
374  * and not an ncx:password
375  */
376 #define OBJ_FL_OC_HASHED_VALUE bit5
377 
378 /* This bit is set to indicate that the object is NOT OK for nolock-get
379  * Use on config=false nodes that it is not safe to GET in the
380  * PTHREADS build without a rdlock on running
381  */
382 #define OBJ_FL_BAN_NOLOCK_GET bit6
383 
384 
385 /********* uflags field in obj_template_t *************/
386 
387 /* This field represents the user flags and no system bits
388  * are defined for this field. It is used by yang_obj_cb
389  * callback functions to set user-specific flags
390  */
391 
392 /********* silflags field in obj_template_t *************/
393 
394 /* This bit is set in agt_rpc to indicate the RPC is
395  * currently being invoked; If another session attempts
396  * to invoke the RPC while busy, and the obj_is_exclusive_rpc
397  * the RPC request will be rejected by the server
398  */
399 #define OBJ_FL_SIL_BUSY bit0
400 
401 #define OBJ_TYPE(OBJ) (OBJ)->objtype
402 
403 #define OBJ_INDEX(OBJ) (OBJ)->index
404 
405 /* mark the object as a top object since the yang_obj does
406  * not catch top-level uses from a grouping as a top object
407  */
408 #define OBJ_SET_TOP(OBJ) (OBJ)->flags |= OBJ_FL_TOP
409 
410 #define OBJ_SET_SIL_BUSY(OBJ) (OBJ)->silflags |= OBJ_FL_SIL_BUSY
411 
412 #define OBJ_CLEAR_SIL_BUSY(OBJ) (OBJ)->silflags &= ~OBJ_FL_SIL_BUSY
413 
414 #define OBJ_IS_SIL_BUSY(OBJ) ((OBJ)->silflags & OBJ_FL_SIL_BUSY)
415 
416 #define OBJ_GET_CBSET(OBJ) (OBJ)->cbset
417 
418 
419 /* Get2 support */
420 #define OBJ_SET_REMOTE_GET2(OBJ) (OBJ)->xflags |= OBJ_FL_REMOTE_GET2
421 
422 #define OBJ_CLEAR_REMOTE_GET2(OBJ) (OBJ)->xflags &= ~OBJ_FL_REMOTE_GET2
423 
424 #define OBJ_HAS_REMOTE_GET2(OBJ) ((OBJ)->xflags & OBJ_FL_REMOTE_GET2)
425 
426 #define OBJ_SET_GET2CB(OBJ, CB) (OBJ)->get2cb = CB
427 
428 #define OBJ_GET_GET2CB(OBJ) (getcb_fn2_t)(OBJ)->get2cb
429 
430 #define OBJ_SET_EDIT2_MODE(OBJ) (OBJ)->xflags |= OBJ_FL_EDIT2_MODE
431 
432 #define OBJ_IS_EDIT2_MODE(OBJ) ((OBJ)->xflags & OBJ_FL_EDIT2_MODE)
433 
434 
435 /* XPath tuning */
436 #define OBJ_SET_SKIP_LEAFREF(OBJ) (OBJ)->xflags |= OBJ_FL_SKIP_LEAFREF
437 
438 #define OBJ_IS_SKIP_LEAFREF(OBJ) ((OBJ)->xflags & OBJ_FL_SKIP_LEAFREF)
439 
440 
441 
442 /* Object YANG Hash */
443 #define OBJ_SET_YANG_HASH(OBJ) (OBJ)->xflags |= OBJ_FL_YANG_HASH
444 
445 #define OBJ_IS_YANG_HASH(OBJ) ((OBJ)->xflags & OBJ_FL_YANG_HASH)
446 
447 
448 /* Object Rehash */
449 #define OBJ_SET_YANG_REHASH(OBJ) (OBJ)->xflags |= OBJ_FL_YANG_REHASH
450 
451 #define OBJ_IS_YANG_REHASH(OBJ) ((OBJ)->xflags & OBJ_FL_YANG_REHASH)
452 
453 
454 /* CBSET Malloced */
455 #define OBJ_SET_CBSET_MALLOCED(OBJ) (OBJ)->xflags |= OBJ_FL_CBSET_MALLOCED
456 
457 #define OBJ_IS_CBSET_MALLOCED(OBJ) ((OBJ)->xflags & OBJ_FL_CBSET_MALLOCED)
458 
459 #define OBJ_CLEAR_CBSET_MALLOCED(OBJ) (OBJ)->xflags &= ~OBJ_FL_CBSET_MALLOCED
460 
461 /* Object is generic */
462 #define OBJ_SET_GENERIC(OBJ) (OBJ)->xflags |= OBJ_FL_GENERIC
463 
464 #define OBJ_IS_GENERIC(OBJ) ((OBJ)->xflags & OBJ_FL_GENERIC)
465 
466 
467 /* Object or children have a default value */
468 /* NOT USED */
469 #define OBJ_SET_DEF_DONE(OBJ) (OBJ)->xflags |= OBJ_FL_DEF_DONE
470 
471 /* NOT USED */
472 #define OBJ_IS_DEF_DONE(OBJ) ((OBJ)->xflags & OBJ_FL_DEF_DONE)
473 
474 /* NOT USED */
475 #define OBJ_SET_DEF(OBJ) (OBJ)->xflags |= OBJ_FL_DEF
476 
477 /* NOT USED */
478 #define OBJ_IS_DEF(OBJ) ((OBJ)->xflags & OBJ_FL_DEF)
479 
480 /* Object is an RPC that is allowed in library mode */
481 #define OBJ_SET_LIBMODE(OBJ) (OBJ)->xflags |= OBJ_FL_LIBMODE
482 
483 #define OBJ_IS_LIBMODE(OBJ) ((OBJ)->xflags & OBJ_FL_LIBMODE)
484 
485 #define OBJ_USER_FLAGS(OBJ) (OBJ)->uflags
486 
487 /* get the object pointer in an obj_key_t */
488 #define OBJ_KEY_OBJ(K) (K)->keyobj
489 
490 /* get the current edit transaction id;
491  * -- changed on each transaction this object is tested
492  */
493 #define OBJ_EDIT_TXID(OBJ) (OBJ)->edit_txid
494 
495 #define OBJ_EXTR_MUST_TXID(OBJ) (OBJ)->must_txid
496 #define OBJ_EXTR_WHEN_TXID(OBJ) (OBJ)->when_txid
497 #define OBJ_EXTR_LEAFREF_TXID(OBJ) (OBJ)->leafref_txid
498 
499 
500 /* Object is flagged no-nvstore */
501 #define OBJ_SET_NO_NVSTORE(OBJ) (OBJ)->xflags |= OBJ_FL_NO_NVSTORE
502 
503 #define OBJ_IS_NO_NVSTORE(OBJ) ((OBJ)->xflags & OBJ_FL_NO_NVSTORE)
504 
505 
506 /* Object is flagged yangmap-source */
507 #define OBJ_SET_YANGMAP_SOURCE(OBJ) \
508  (OBJ)->xflags |= OBJ_FL_YANGMAP_SOURCE
509 
510 #define OBJ_IS_YANGMAP_SOURCE(OBJ) \
511  ((OBJ)->xflags & OBJ_FL_YANGMAP_SOURCE)
512 
513 
514 /* Object is flagged yangmap-target */
515 #define OBJ_SET_YANGMAP_TARGET(OBJ) \
516  (OBJ)->xflags |= OBJ_FL_YANGMAP_TARGET
517 
518 #define OBJ_IS_YANGMAP_TARGET(OBJ) \
519  ((OBJ)->xflags & OBJ_FL_YANGMAP_TARGET)
520 
521 /* Object is flagged yangmap-childmap */
522 #define OBJ_SET_YANGMAP_CHILD(OBJ) \
523  (OBJ)->xflags |= OBJ_FL_YANGMAP_CHILD
524 
525 #define OBJ_IS_YANGMAP_CHILD(OBJ) \
526  ((OBJ)->xflags & OBJ_FL_YANGMAP_CHILD)
527 
528 /* Object is flagged yangmap-keymap */
529 #define OBJ_SET_YANGMAP_KEY(OBJ) \
530  (OBJ)->xflags |= OBJ_FL_YANGMAP_KEY
531 
532 #define OBJ_IS_YANGMAP_KEY(OBJ) \
533  ((OBJ)->xflags & OBJ_FL_YANGMAP_KEY)
534 
535 /* if OBJ_IS_YANGMAP_SOURCE : yangmap_cb == nodemap_t
536  * if OBJ_IS_YANGMAP_TARGET : yangmap_cb == nodemap_t
537  * if OBJ_IS_YANGMAP_CHILD : yangmap_cb == childmap_t
538  * if OBJ_IS_YANGMAP_KEY : yangmap_cb == keymap_t
539  */
540 #define OBJ_YANGMAP_CB(OBJ) (OBJ)->yangmap_cb
541 
542 /* Object DUP_LOCAL test has been done */
543 #define OBJ_SET_DUP_LOCAL_DONE(OBJ) \
544  (OBJ)->xflags |= OBJ_FL_DUP_LOCAL_DONE
545 
546 #define OBJ_IS_DUP_LOCAL_DONE(OBJ) \
547  ((OBJ)->xflags & OBJ_FL_DUP_LOCAL_DONE)
548 
549 
550 #define OBJ_RPC_SUPPORTED(OBJ) (OBJ)->def.rpc->supported
551 
552 
553 /* Trans Hook assignment bits */
554 #define OBJ_SET_TRANS_HOOK_SET(OBJ) (OBJ)->xflags |= OBJ_FL_TRANS_HOOK_SET
555 #define OBJ_IS_TRANS_HOOK_SET(OBJ) ((OBJ)->xflags & OBJ_FL_TRANS_HOOK_SET)
556 #define OBJ_CLEAR_TRANS_HOOK_SET(OBJ) (OBJ)->xflags &= ~OBJ_FL_TRANS_HOOK_SET
557 
558 
559 /* All in One assignment bits */
560 #define OBJ_SET_AIO_GET2(OBJ) (OBJ)->xflags2 |= OBJ_FL_AIO_GET2
561 #define OBJ_IS_AIO_GET2(OBJ) ((OBJ)->xflags2 & OBJ_FL_AIO_GET2)
562 
563 /* GET2 object but not All in One object, but a parent of AIO */
564 #define OBJ_SET_AIO_PARENT(OBJ) (OBJ)->xflags2 |= OBJ_FL_AIO_PARENT
565 #define OBJ_IS_AIO_PARENT(OBJ) ((OBJ)->xflags2 & OBJ_FL_AIO_PARENT)
566 
567 /* AIO with XML/JSON support flags*/
568 #define OBJ_SET_AIO_GET2_XML(OBJ) (OBJ)->xflags2 |= OBJ_FL_AIO_GET2_XML
569 #define OBJ_IS_AIO_GET2_XML(OBJ) ((OBJ)->xflags2 & OBJ_FL_AIO_GET2_XML)
570 
571 #define OBJ_SET_AIO_GET2_JSON(OBJ) (OBJ)->xflags2 |= OBJ_FL_AIO_GET2_JSON
572 #define OBJ_IS_AIO_GET2_JSON(OBJ) ((OBJ)->xflags2 & OBJ_FL_AIO_GET2_JSON)
573 
574 /* Dynamic Default Hook assignment bits */
575 #define OBJ_SET_DEF_HOOK(OBJ) (OBJ)->xflags2 |= OBJ_FL_DEF_HOOK
576 #define OBJ_IS_DEF_HOOK(OBJ) ((OBJ)->xflags2 & OBJ_FL_DEF_HOOK)
577 #define OBJ_CLEAR_DEF_HOOK(OBJ) (OBJ)->xflags2 &= ~OBJ_FL_DEF_HOOK
578 #define OBJ_GET_DEF_HOOK_CB(OBJ) (ncx_def_hook_cbfn_t)(OBJ)->def_hook_cb
579 
580 /* openconfig-hashed-value bit */
581 #define OBJ_SET_OC_HASHED_VALUE(OBJ) (OBJ)->xflags2 |= OBJ_FL_OC_HASHED_VALUE
582 #define OBJ_IS_OC_HASHED_VALUE(OBJ) ((OBJ)->xflags2 & OBJ_FL_OC_HASHED_VALUE)
583 
584 /* Static Ban Nock GET assignment bits */
585 #define OBJ_SET_BAN_NOLOCK_GET(OBJ) (OBJ)->xflags2 |= OBJ_FL_BAN_NOLOCK_GET
586 #define OBJ_IS_BAN_NOLOCK_GET(OBJ) ((OBJ)->xflags2 & OBJ_FL_BAN_NOLOCK_GET)
587 
588 
589 /********************************************************************
590 * *
591 * T Y P E S *
592 * *
593 *********************************************************************/
594 
595 // Header Only
618 typedef enum obj_type_t_ {
623 
629 
632 
635 
638 
644 
660 
668 
679 
688 
689 
705 
708 
715 } YPACK obj_type_t;
716 
717 
718 #define OBJ_TYP_LAST OBJ_TYP_ACTION
719 
725 typedef uint16 obj_index_t;
726 
727 
729 typedef enum obj_augtype_t_ {
735 } obj_augtype_t;
736 
737 
739 typedef struct obj_key_t_ {
740  dlq_hdr_t qhdr;
741  struct obj_template_t_ *keyobj;
742  boolean seen;
743 } YPACK obj_key_t;
744 
745 
747 typedef struct obj_defval_tk_t_ {
748  dlq_hdr_t qhdr;
749  xmlChar *def;
751 } YPACK obj_defval_tk_t;
752 
753 
755 typedef struct obj_unique_comp_t_ {
756  dlq_hdr_t qhdr;
757  struct obj_template_t_ *unobj;
758  xmlChar *xpath;
759  boolean isduplicate;
760 } YPACK obj_unique_comp_t;
761 
762 
764 typedef struct obj_unique_t_ {
765  dlq_hdr_t qhdr;
766  xmlChar *xpath;
767  dlq_hdr_t compQ;
768  boolean seen;
769  boolean isconfig;
771 } YPACK obj_unique_t;
772 
773 
775 typedef struct obj_container_t_ {
777  xmlChar *name;
778 
780  xmlChar *descr;
781 
783  xmlChar *ref;
784 
786  xmlChar *presence;
787  dlq_hdr_t *typedefQ;
788  dlq_hdr_t *groupingQ;
789  dlq_hdr_t *datadefQ;
791  dlq_hdr_t mustQ;
792  struct obj_template_t_ *defaultparm;
793  obj_index_t last_index;
794 } YPACK obj_container_t;
795 
796 
798 typedef struct obj_leaf_t_ {
800  xmlChar *name;
801 
803  xmlChar *units;
804 
806  xmlChar *defval;
807 
809  xmlChar *descr;
810 
812  xmlChar *ref;
813 
816 
819 
821  uint16 keynum;
822 
823  dlq_hdr_t mustQ;
826  dlq_hdr_t leafrefQ;
829  struct obj_template_t_ *leafrefobj;
830 } YPACK obj_leaf_t;
831 
832 
834 typedef struct obj_leaflist_t_ {
836  xmlChar *name;
837 
839  xmlChar *units;
840 
842  xmlChar *descr;
843 
845  xmlChar *ref;
846 
849 
851  boolean defset;
852  boolean ordersys;
853  boolean minset;
854  uint32 minelems;
855  boolean maxset;
856  uint32 maxelems;
858  dlq_hdr_t mustQ;
859  dlq_hdr_t leafrefQ;
860  dlq_hdr_t defvalQ;
863  struct obj_template_t_ *leafrefobj;
864 } YPACK obj_leaflist_t;
865 
866 
868 typedef struct obj_list_t_ {
870  xmlChar *name;
871 
873  xmlChar *keystr;
874 
876  xmlChar *descr;
877 
879  xmlChar *ref;
880  dlq_hdr_t *typedefQ;
881  dlq_hdr_t *groupingQ;
882  dlq_hdr_t *datadefQ;
883  dlq_hdr_t keyQ;
884  dlq_hdr_t uniqueQ;
885  boolean ordersys;
886  boolean minset;
887  uint32 minelems;
888  boolean maxset;
889  uint32 maxelems;
891  dlq_hdr_t mustQ;
895 
897  obj_index_t last_index;
898 } YPACK obj_list_t;
899 
900 
902 typedef struct obj_choice_t_ {
903  xmlChar *name;
904  xmlChar *defval;
907  xmlChar *descr;
908 
910  xmlChar *ref;
911  dlq_hdr_t *caseQ;
912  boolean caseQclone;
914 } YPACK obj_choice_t;
915 
916 
918 typedef struct obj_case_t_ {
919  xmlChar *name;
922  xmlChar *descr;
923 
925  xmlChar *ref;
926 
927  dlq_hdr_t *datadefQ;
931  boolean nameclone;
933 } YPACK obj_case_t;
934 
935 
937 typedef struct obj_uses_t_ {
938  xmlChar *prefix;
939  xmlChar *name;
942  xmlChar *descr;
943 
945  xmlChar *ref;
947  dlq_hdr_t *datadefQ;
949  boolean expand_done;
950 } YPACK obj_uses_t;
951 
952 
954 typedef struct obj_refine_t_ {
956  xmlChar *target;
957 
959  struct obj_template_t_ *targobj;
960 
962  xmlChar *descr;
963 
971 
973  xmlChar *ref;
974 
977 
979  xmlChar *presence;
980 
983 
984  dlq_hdr_t defval_tkQ;
988 
991  uint32 minelems;
993  uint32 maxelems;
995  dlq_hdr_t mustQ;
996 } YPACK obj_refine_t;
997 
998 
1000 typedef struct obj_rpcio_t_ {
1001  xmlChar *name;
1002  dlq_hdr_t *typedefQ;
1003  dlq_hdr_t *groupingQ;
1004  dlq_hdr_t datadefQ;
1005  dlq_hdr_t mustQ;
1010  boolean is_input;
1011 
1015  struct obj_template_t_ *defaultparm;
1016 } YPACK obj_rpcio_t;
1017 
1018 
1020 typedef struct obj_rpc_t_ {
1022  xmlChar *name;
1023 
1025  xmlChar *descr;
1026 
1028  xmlChar *ref;
1029 
1031  dlq_hdr_t *typedefQ;
1032  dlq_hdr_t *groupingQ;
1033  dlq_hdr_t datadefQ;
1034  boolean is_action;
1038  boolean supported;
1039 } YPACK obj_rpc_t;
1040 
1041 
1043 typedef struct obj_augment_t_ {
1045  xmlChar *target;
1046 
1048  xmlChar *descr;
1049 
1051  xmlChar *ref;
1052 
1054  struct obj_template_t_ *targobj;
1055 
1057  obj_augtype_t augtype;
1059  dlq_hdr_t datadefQ;
1060  uint16 depth;
1061 } YPACK obj_augment_t;
1062 
1063 
1065 typedef struct obj_notif_t_ {
1067  xmlChar *name;
1068 
1070  xmlChar *descr;
1071 
1073  xmlChar *ref;
1075  dlq_hdr_t *typedefQ;
1076  dlq_hdr_t *groupingQ;
1077  dlq_hdr_t datadefQ;
1078  dlq_hdr_t mustQ;
1079  boolean notif_enabled;
1081  boolean in_data;
1082 } YPACK obj_notif_t;
1083 
1084 
1086 typedef struct obj_iffeature_ptr_t_ {
1087  dlq_hdr_t qhdr;
1089 } YPACK obj_iffeature_ptr_t;
1090 
1091 
1093 typedef struct obj_errmsg_filter_t_ {
1094  dlq_hdr_t qhdr;
1095  xmlChar *matchstr;
1096  boolean is_errortag;
1097 } YPACK obj_errmsg_filter_t;
1098 
1099 
1101 typedef struct obj_errmsg_parm_t_ {
1102  dlq_hdr_t qhdr;
1103  xmlChar *path;
1106  uint32 len;
1107 
1109  xmlChar *valstr;
1110 } YPACK obj_errmsg_parm_t;
1111 
1112 
1114 typedef struct obj_errmsg_t_ {
1115  dlq_hdr_t qhdr;
1116  xmlChar *basestr;
1117  xmlChar *langstr;
1118  dlq_hdr_t parmQ;
1119  dlq_hdr_t filterQ;
1120 } YPACK obj_errmsg_t;
1121 
1122 
1124 typedef unsigned long oid_t;
1125 
1132 typedef struct obj_oid_t_ {
1133  uint8 cnt;
1134  oid_t *oidc;
1135 } YPACK obj_oid_t;
1136 
1137 
1139 typedef uint8 obj_testflags_t;
1140 
1141 
1146 typedef struct obj_template_t_ {
1147  dlq_hdr_t qhdr;
1148  obj_type_t objtype;
1150  uint32 yang_hash;
1152  uint32 flags;
1153  uint32 xflags;
1154  uint32 xflags2;
1156  uint32 uflags;
1157  uint8 silflags;
1159  obj_testflags_t testflags;
1160  obj_testflags_t desc_testflags;
1163  obj_index_t index;
1165  obj_oid_t *oid;
1166  boolean set_snmp_flags;
1167  boolean xpath_oper_ok;
1169  struct obj_template_t_ *parent;
1170  struct obj_template_t_ *usesobj;
1171  struct obj_template_t_ *augobj;
1173  struct xpath_pcb_t_ *when;
1174  dlq_hdr_t metadataQ;
1175  dlq_hdr_t appinfoQ;
1176  dlq_hdr_t iffeatureQ;
1178  dlq_hdr_t inherited_iffeatureQ;
1181  dlq_hdr_t inherited_whenQ;
1182 
1184  dlq_hdr_t *dataruleQ;
1185 
1193  void *cbset;
1194 
1196  void *get2cb;
1197 
1205  struct ncx_module_t_ *mod;
1206 
1209 
1211  struct xpath_pcb_t_ *xpath_backptr[OBJ_NUM_XPATH_BACKPTRS];
1212 
1214  dlq_hdr_t xpath_backptrQ; // backptr to xpath_pcb_t
1215 
1221 
1223  dlq_hdr_t *errmsgQ; // Q of obj_errmsg_t
1224 
1229  void *yangmap_cb;
1230 
1233 
1236 
1239 
1242 
1244  union def_ {
1245  obj_container_t *container;
1246  obj_leaf_t *leaf;
1247  obj_leaflist_t *leaflist;
1248  obj_list_t *list;
1249  obj_choice_t *choic;
1250  obj_case_t *cas;
1251  obj_uses_t *uses;
1252  obj_refine_t *refine;
1253  obj_augment_t *augment;
1254  obj_rpc_t *rpc;
1255  obj_rpcio_t *rpcio;
1256  obj_notif_t *notif;
1257  } def;
1258 
1263 
1264 } YPACK obj_template_t;
1265 
1266 
1268 typedef struct obj_metadata_t_ {
1269  dlq_hdr_t qhdr;
1270  struct obj_template_t_ *parent;
1271  xmlChar *name;
1275  boolean typdef_copy;
1276 } YPACK obj_metadata_t;
1277 
1278 
1280 typedef enum obj_deviate_arg_t_ {
1286 } YPACK obj_deviate_arg_t;
1287 
1288 
1290 typedef struct obj_deviate_t_ {
1291  dlq_hdr_t qhdr;
1300 
1302  boolean empty;
1303 
1305  obj_deviate_arg_t arg;
1306 
1309 
1312 
1315 
1317  xmlChar *units;
1318 
1321 
1323  dlq_hdr_t defval_tkQ;
1324 
1326  boolean config;
1327 
1330 
1332  boolean mandatory;
1333 
1336 
1338  uint32 minelems;
1342  uint32 maxelems;
1344  dlq_hdr_t mustQ;
1345  dlq_hdr_t uniqueQ;
1346  dlq_hdr_t appinfoQ;
1347 } YPACK obj_deviate_t;
1348 
1349 
1351 typedef struct obj_deviation_t_ {
1352  dlq_hdr_t qhdr;
1353  xmlChar *target;
1354  xmlChar *targmodname;
1355  obj_template_t *targobj;
1358  xmlChar *descr;
1359 
1361  xmlChar *ref;
1362 
1365  xmlChar *devmodname;
1366  boolean empty;
1367  boolean annotation;
1369  dlq_hdr_t deviateQ;
1370  dlq_hdr_t appinfoQ;
1371 } YPACK obj_deviation_t;
1372 
1373 
1384 typedef boolean
1385  (*obj_walker_fn_t) (obj_template_t *obj,
1386  void *cookie1,
1387  void *cookie2,
1388  boolean nonconfig_warn);
1389 
1390 
1391 #define OBJ_SET_TESTFLAGS(OBJ, FL) (OBJ)->testflags = FL
1392 
1393 #define OBJ_GET_TESTFLAGS(OBJ) (OBJ)->testflags
1394 
1395 #define OBJ_SET_DESC_TESTFLAGS(OBJ, FL) (OBJ)->desc_testflags = FL
1396 
1397 #define OBJ_GET_DESC_TESTFLAGS(OBJ) (OBJ)->desc_testflags
1398 
1399 #define OBJ_UPDATE_DESC_TESTFLAGS(OBJ, FL) (OBJ)->desc_testflags |= FL
1400 
1403 /********************************************************************
1404 * *
1405 * F U N C T I O N S *
1406 * *
1407 *********************************************************************/
1408 
1425 extern obj_template_t *
1426  obj_new_template (obj_type_t objtype);
1427 
1428 
1438 extern void
1439  obj_free_template (obj_template_t *obj);
1440 
1441 
1454 extern obj_template_t *
1455  obj_find_template (dlq_hdr_t *que,
1456  const xmlChar *modname,
1457  const xmlChar *objname);
1458 
1459 
1471 extern obj_template_t *
1472  obj_find_schema_template ( dlq_hdr_t *que,
1473  const xmlChar *modname,
1474  const xmlChar *objname );
1475 
1476 
1488 extern const obj_template_t *
1489  obj_find_template_con (dlq_hdr_t *que,
1490  const xmlChar *modname,
1491  const xmlChar *objname);
1492 
1493 
1505 extern obj_template_t *
1506  obj_find_template_test (dlq_hdr_t *que,
1507  const xmlChar *modname,
1508  const xmlChar *objname);
1509 
1510 
1524 extern obj_template_t *
1526  const xmlChar *modname,
1527  const xmlChar *objname);
1528 
1529 
1545 extern obj_template_t *
1547  const xmlChar *modname,
1548  const xmlChar *objname);
1549 
1550 
1572 extern obj_template_t *
1574  const xmlChar *modname,
1575  const xmlChar *objname,
1576  ncx_name_match_t match_names,
1577  boolean alt_names,
1578  boolean dataonly,
1579  status_t *retres);
1580 
1581 
1595 extern obj_template_t *
1597  const xmlChar *modname,
1598  const xmlChar *objname);
1599 
1600 
1617 extern obj_template_t *
1618  obj_find_child (obj_template_t *obj,
1619  const xmlChar *modname,
1620  const xmlChar *objname);
1621 
1622 
1639 extern obj_template_t *
1640  obj_find_child_lrcheck (obj_template_t *obj,
1641  const xmlChar *modname,
1642  const xmlChar *objname);
1643 
1644 
1661 extern obj_template_t *
1662  obj_find_child_choice_case (obj_template_t *obj,
1663  const xmlChar *modname,
1664  const xmlChar *objname);
1665 
1666 
1681 extern obj_template_t *
1682  obj_find_child_fast (obj_template_t *obj,
1683  xmlns_id_t nsid,
1684  const xmlChar *objname);
1685 
1686 
1711 extern obj_template_t *
1712  obj_find_child_ex (obj_template_t *obj,
1713  const xmlChar *modname,
1714  const xmlChar *objname,
1715  ncx_name_match_t match_names,
1716  boolean alt_names,
1717  boolean dataonly,
1718  status_t *retres);
1719 
1720 
1731 extern obj_template_t *
1732  obj_find_child_str (obj_template_t *obj,
1733  const xmlChar *modname,
1734  const xmlChar *objname,
1735  uint32 objnamelen);
1736 
1737 
1759 extern obj_template_t *
1760  obj_match_child_str (obj_template_t *obj,
1761  const xmlChar *modname,
1762  const xmlChar *objname,
1763  uint32 objnamelen,
1764  uint32 *matchcount);
1765 
1766 
1777 extern obj_template_t *
1778  obj_first_child (obj_template_t *obj);
1779 
1780 
1791 extern obj_template_t *
1792  obj_first_terminal_child (obj_template_t *obj);
1793 
1794 
1805 extern obj_template_t *
1806  obj_first_terminal_child_nokey (obj_template_t *obj);
1807 
1808 
1819 extern obj_template_t *
1820  obj_last_child (obj_template_t *obj);
1821 
1822 
1833 extern obj_template_t *
1834  obj_next_child (obj_template_t *obj);
1835 
1836 
1847 extern obj_template_t *
1848  obj_next_terminal_child (obj_template_t *obj);
1849 
1850 
1861 extern obj_template_t *
1862  obj_next_terminal_child_nokey (obj_template_t *obj);
1863 
1864 
1875 extern obj_template_t *
1876  obj_first_child_augok (obj_template_t *obj);
1877 
1878 
1889 extern obj_template_t *
1890  obj_next_child_augok (obj_template_t *obj);
1891 
1892 
1903 extern obj_template_t *
1904  obj_previous_child (obj_template_t *obj);
1905 
1906 
1918 extern obj_template_t *
1919  obj_first_child_deep (obj_template_t *obj);
1920 
1921 
1933 extern obj_template_t *
1934  obj_next_child_deep (obj_template_t *obj);
1935 
1936 
1953 extern obj_template_t *
1954  obj_next_child_deep_ex (obj_template_t *obj,
1955  boolean stopnext);
1956 
1957 
1993 extern boolean
1995  obj_walker_fn_t walkerfn,
1996  void *cookie1,
1997  void *cookie2,
1998  obj_template_t *startnode,
1999  const xmlChar *modname,
2000  const xmlChar *childname,
2001  boolean configonly,
2002  boolean textmode,
2003  boolean useroot);
2004 
2005 
2045 extern boolean
2047  obj_walker_fn_t walkerfn,
2048  void *cookie1,
2049  void *cookie2,
2050  obj_template_t *startnode,
2051  const xmlChar *modname,
2052  const xmlChar *name,
2053  boolean configonly,
2054  boolean textmode,
2055  boolean useroot,
2056  boolean orself,
2057  boolean *fncalled);
2058 
2059 
2099 extern boolean
2101  obj_walker_fn_t walkerfn,
2102  void *cookie1,
2103  void *cookie2,
2104  obj_template_t *startnode,
2105  const xmlChar *modname,
2106  const xmlChar *name,
2107  boolean configonly,
2108  boolean textmode,
2109  boolean useroot,
2110  boolean orself,
2111  boolean *fncalled);
2112 
2113 
2156 extern boolean
2158  obj_walker_fn_t walkerfn,
2159  void *cookie1,
2160  void *cookie2,
2161  obj_template_t *startnode,
2162  const xmlChar *modname,
2163  const xmlChar *name,
2164  boolean configonly,
2165  boolean dblslash,
2166  boolean textmode,
2167  boolean useroot,
2168  ncx_xpath_axis_t axis,
2169  boolean *fncalled);
2170 
2171 
2180 extern obj_case_t *
2181  obj_find_case (obj_choice_t *choic,
2182  const xmlChar *modname,
2183  const xmlChar *casname);
2184 
2185 
2186 
2197 extern obj_template_t *
2198  obj_new_rpcio (obj_template_t *rpcobj,
2199  const xmlChar *name);
2200 
2201 
2207 extern void
2208  obj_clean_datadefQ (dlq_hdr_t *que);
2209 
2210 
2218 extern typ_template_t *
2219  obj_find_type (obj_template_t *obj,
2220  const xmlChar *typname);
2221 
2222 
2229 extern typ_template_t *
2230  obj_first_typedef (obj_template_t *obj);
2231 
2232 
2240 extern grp_template_t *
2241  obj_find_grouping (obj_template_t *obj,
2242  const xmlChar *grpname);
2243 
2250 extern grp_template_t *
2251  obj_first_grouping (obj_template_t *obj);
2252 
2253 
2269 extern status_t
2270  obj_set_named_type (void *pcb, // yang_pcb_t
2271  tk_chain_t *tkc,
2272  ncx_module_t *mod,
2273  const xmlChar *typname,
2274  typ_def_t *typdef,
2275  obj_template_t *parent,
2276  grp_template_t *grp);
2277 
2278 
2301 extern obj_template_t *
2303  obj_template_t *srcobj,
2304  dlq_hdr_t *mobjQ);
2305 
2306 
2331 extern obj_template_t *
2333  obj_template_t *srcobj,
2334  dlq_hdr_t *mobjQ);
2335 
2336 
2337 /******************** obj_unique_t ********************/
2338 
2339 
2345 extern obj_unique_t *
2346  obj_new_unique (void);
2347 
2348 
2354 extern void
2355  obj_init_unique (obj_unique_t *un);
2356 
2357 
2363 extern void
2364  obj_free_unique (obj_unique_t *un);
2365 
2366 
2372 extern void
2373  obj_clean_unique (obj_unique_t *un);
2374 
2375 
2381 extern obj_unique_comp_t *
2382  obj_new_unique_comp (void);
2383 
2384 
2390 extern void
2391  obj_free_unique_comp (obj_unique_comp_t *unc);
2392 
2393 
2402 extern obj_unique_t *
2403  obj_find_unique (dlq_hdr_t *que,
2404  const xmlChar *xpath);
2405 
2406 
2413 extern obj_unique_t *
2414  obj_first_unique (obj_template_t *listobj);
2415 
2416 
2423 extern obj_unique_t *
2424  obj_next_unique (obj_unique_t *un);
2425 
2426 
2433 extern obj_unique_comp_t *
2434  obj_first_unique_comp (obj_unique_t *un);
2435 
2436 
2443 extern obj_unique_comp_t *
2444  obj_next_unique_comp (obj_unique_comp_t *uncomp);
2445 
2446 
2452 extern obj_key_t *
2453  obj_new_key (void);
2454 
2455 
2461 extern void
2462  obj_free_key (obj_key_t *key);
2463 
2464 
2472 extern obj_key_t *
2473  obj_find_key (dlq_hdr_t *que,
2474  const xmlChar *keycompname);
2475 
2476 
2485 extern obj_key_t *
2486  obj_find_key2 (dlq_hdr_t *que,
2487  obj_template_t *keyobj);
2488 
2489 
2496 extern obj_key_t *
2497  obj_first_key (obj_template_t *obj);
2498 
2499 
2506 extern obj_key_t *
2507  obj_last_key (obj_template_t *obj);
2508 
2509 
2516 extern const obj_key_t *
2517  obj_first_ckey (const obj_template_t *obj);
2518 
2519 
2526 extern obj_key_t *
2527  obj_next_key (obj_key_t *objkey);
2528 
2529 
2536 extern obj_key_t *
2537  obj_prev_key (obj_key_t *objkey);
2538 
2539 
2546 extern const obj_key_t *
2547  obj_next_ckey (const obj_key_t *objkey);
2548 
2549 
2556 extern uint32
2557  obj_key_count (const obj_template_t *obj);
2558 
2559 
2567 extern uint32
2568  obj_key_count_to_root (obj_template_t *obj);
2569 
2570 
2585 extern void
2586  obj_traverse_keys (obj_template_t *obj,
2587  void *cookie1,
2588  void *cookie2,
2589  obj_walker_fn_t walkerfn);
2590 
2591 
2598 extern boolean
2599  obj_any_rpcs (const dlq_hdr_t *datadefQ);
2600 
2601 
2608 extern boolean
2609  obj_any_notifs (const dlq_hdr_t *datadefQ);
2610 
2611 
2617 extern obj_deviate_t *
2618  obj_new_deviate (void);
2619 
2620 
2626 extern void
2627  obj_free_deviate (obj_deviate_t *deviate);
2628 
2629 
2636 extern const xmlChar *
2637  obj_get_deviate_arg (obj_deviate_arg_t devarg);
2638 
2639 
2645 extern obj_deviation_t *
2646  obj_new_deviation (void);
2647 
2648 
2654 extern void
2655  obj_free_deviation (obj_deviation_t *deviation);
2656 
2657 
2663 extern void
2664  obj_clean_deviationQ (dlq_hdr_t *deviationQ);
2665 
2666 
2675 extern status_t
2676  obj_gen_object_id (const obj_template_t *obj,
2677  xmlChar **buff);
2678 
2679 
2689 extern status_t
2690  obj_gen_object_id_prefix (const obj_template_t *obj, xmlChar **buff);
2691 
2692 
2703 extern status_t
2705  const obj_template_t *obj,
2706  xmlChar **buff);
2707 
2708 
2721 extern status_t
2722  obj_gen_object_id_xpath (const obj_template_t *obj,
2723  xmlChar **buff);
2724 
2725 
2734 extern status_t obj_gen_object_id_error (const obj_template_t *obj,
2735  xmlChar **buff);
2736 
2737 
2747 extern status_t obj_gen_object_id_unique (const obj_template_t *obj,
2748  const obj_template_t *stopobj,
2749  xmlChar **buff);
2750 
2751 
2763 extern status_t
2765  const obj_template_t *obj,
2766  xmlChar **buff);
2767 
2768 
2782 extern status_t
2783  obj_copy_object_id (const obj_template_t *obj,
2784  xmlChar *buff,
2785  uint32 bufflen,
2786  uint32 *reallen);
2787 
2788 
2802 extern status_t
2803  obj_copy_object_id_mod (const obj_template_t *obj,
2804  xmlChar *buff,
2805  uint32 bufflen,
2806  uint32 *reallen);
2807 
2808 
2819 extern status_t
2820  obj_gen_aughook_id (const obj_template_t *obj,
2821  xmlChar **buff);
2822 
2823 
2830 extern const xmlChar *
2831  obj_get_name (const obj_template_t *obj);
2832 
2833 
2841 extern status_t
2842  obj_set_name (obj_template_t *obj,
2843  const xmlChar *objname);
2844 
2845 
2858 extern boolean
2859  obj_has_name (const obj_template_t *obj);
2860 
2861 
2870 extern boolean
2871  obj_has_text_content (const obj_template_t *obj);
2872 
2873 
2880 extern ncx_status_t
2881  obj_get_status (const obj_template_t *obj);
2882 
2883 
2890 extern const xmlChar *
2891  obj_get_description (const obj_template_t *obj);
2892 
2893 
2903 extern const xmlChar *
2904  obj_get_alt_description (const obj_template_t *obj);
2905 
2906 
2914 extern const xmlChar *
2915  obj_get_help_description (const obj_template_t *obj);
2916 
2917 
2925 extern const xmlChar *
2926  obj_get_info_description (const obj_template_t *obj);
2927 
2928 
2935 extern const void *
2936  obj_get_description_addr (const obj_template_t *obj);
2937 
2938 
2945 extern const xmlChar *
2946  obj_get_reference (const obj_template_t *obj);
2947 
2948 
2956 extern const void *
2957  obj_get_reference_addr (const obj_template_t *obj);
2958 
2959 
2960 #define obj_is_config obj_get_config_flag_deep
2961 
2962 
2972 extern boolean
2973  obj_get_config_flag (const obj_template_t *obj);
2974 
2975 
2989 extern boolean
2990  obj_get_config_flag2 (const obj_template_t *obj,
2991  boolean *setflag);
2992 
2993 
3001 extern ncx_access_t
3002  obj_get_max_access (const obj_template_t *obj);
3003 
3004 
3011 extern dlq_hdr_t *
3012  obj_get_appinfoQ (obj_template_t *obj);
3013 
3014 
3021 extern dlq_hdr_t *
3022  obj_get_mustQ (const obj_template_t *obj);
3023 
3024 
3031 extern dlq_hdr_t *
3032  obj_get_leafrefQ (const obj_template_t *obj);
3033 
3034 
3044 extern const xmlChar *
3045  obj_get_typestr (const obj_template_t *obj);
3046 
3047 
3054 extern dlq_hdr_t *
3055  obj_get_datadefQ (obj_template_t *obj);
3056 
3057 
3064 extern const dlq_hdr_t *
3065  obj_get_cdatadefQ (const obj_template_t *obj);
3066 
3067 
3078 extern const xmlChar *
3079  obj_get_default (const obj_template_t *obj);
3080 
3081 
3090 extern const xmlChar *
3091  obj_get_first_default (const obj_template_t *obj,
3092  ncx_backptr_t **thisdef);
3093 
3094 
3107 extern const xmlChar *
3108  obj_get_next_default (const obj_template_t *obj,
3109  ncx_backptr_t *lastdef,
3110  ncx_backptr_t **thisdef);
3111 
3112 
3119 extern obj_template_t *
3120  obj_get_default_case (obj_template_t *obj);
3121 
3122 
3132 extern boolean
3133  obj_npcon_has_defaults (obj_template_t *obj);
3134 
3135 
3145 extern boolean
3146  obj_npcon_has_defaults_slow (obj_template_t *obj);
3147 
3148 
3157 extern uint32
3158  obj_get_level (const obj_template_t *obj);
3159 
3160 
3170 extern uint32
3171  obj_get_real_level (const obj_template_t *obj);
3172 
3173 
3183 extern boolean
3184  obj_has_typedefs (const obj_template_t *obj);
3185 
3186 
3194 extern typ_def_t *
3195  obj_get_typdef (obj_template_t *obj);
3196 
3197 
3205 extern typ_def_t *
3206  obj_get_base_typdef (obj_template_t *obj);
3207 
3208 
3216 extern const typ_def_t *
3217  obj_get_ctypdef (const obj_template_t *obj);
3218 
3219 
3226 extern ncx_btype_t
3227  obj_get_basetype (const obj_template_t *obj);
3228 
3229 
3236 extern const xmlChar *
3237  obj_get_mod_prefix (const obj_template_t *obj);
3238 
3239 
3246 extern const xmlChar *
3247  obj_get_mod_xmlprefix (const obj_template_t *obj);
3248 
3249 
3256 extern const xmlChar *
3257  obj_get_mod_name (const obj_template_t *obj);
3258 
3259 
3266 extern ncx_module_t *
3267  obj_get_mod (obj_template_t *obj);
3268 
3269 
3276 extern boolean
3277  obj_in_submodule (obj_template_t *obj);
3278 
3279 
3287 extern ncx_module_t *
3288  obj_get_mod_for_dump (obj_template_t *obj);
3289 
3290 
3297 extern const xmlChar *
3298  obj_get_mod_version (const obj_template_t *obj);
3299 
3300 
3307 extern const xmlChar *
3308  obj_get_type_name (const obj_template_t *obj);
3309 
3310 
3317 extern xmlns_id_t
3318  obj_get_nsid (const obj_template_t *obj);
3319 
3320 
3327 extern ncx_iqual_t
3328  obj_get_iqualval (obj_template_t *obj);
3329 
3330 
3338 extern ncx_iqual_t
3339  obj_get_iqualval_ex (obj_template_t *obj,
3340  boolean required);
3341 
3342 
3351 extern boolean
3352  obj_get_min_elements (obj_template_t *obj,
3353  uint32 *minelems);
3354 
3355 
3364 extern boolean
3365  obj_get_max_elements (obj_template_t *obj,
3366  uint32 *maxelems);
3367 
3368 
3375 extern const xmlChar *
3376  obj_get_units (obj_template_t *obj);
3377 
3378 
3385 extern obj_template_t *
3386  obj_get_parent (obj_template_t *obj);
3387 
3388 
3396 extern const obj_template_t *
3397  obj_get_cparent (const obj_template_t *obj);
3398 
3399 
3407 extern obj_template_t *
3408  obj_get_real_parent (obj_template_t *obj);
3409 
3410 
3420 extern const obj_template_t *
3421  obj_get_real_cparent (const obj_template_t *obj);
3422 
3423 
3430 extern const xmlChar *
3431  obj_get_presence_string (const obj_template_t *obj);
3432 
3433 
3441 extern void *
3442  obj_get_presence_string_field (const obj_template_t *obj);
3443 
3444 
3471 extern status_t
3472  obj_get_child_node (obj_template_t *obj,
3473  obj_template_t *chobj,
3474  const xml_node_t *curnode,
3475  boolean xmlorder,
3476  dlq_hdr_t *force_modQ,
3477  obj_template_t **rettop,
3478  obj_template_t **retobj);
3479 
3480 
3487 extern uint32
3488  obj_get_child_count (const obj_template_t *obj);
3489 
3490 
3498 extern obj_template_t *
3499  obj_get_default_parm (obj_template_t *obj);
3500 
3501 
3516 extern boolean
3517  obj_get_config_flag_deep (const obj_template_t *obj);
3518 
3519 
3534 extern boolean
3535  obj_get_config_flag_check (const obj_template_t *obj,
3536  boolean *ingrp);
3537 
3538 
3546 extern uint8
3547  obj_get_fraction_digits (const obj_template_t *obj);
3548 
3549 
3557 extern const ncx_iffeature_t *
3558  obj_get_first_iffeature (const obj_template_t *obj);
3559 
3560 
3568 extern const ncx_iffeature_t *
3569  obj_get_next_iffeature (const ncx_iffeature_t *iffeature);
3570 
3571 
3578 extern boolean
3579  obj_is_anyxml (const obj_template_t *obj);
3580 
3581 
3588 extern boolean
3589  obj_is_anydata (const obj_template_t *obj);
3590 
3591 
3599 extern boolean
3600  obj_is_any (const obj_template_t *obj);
3601 
3602 
3609 extern boolean
3610  obj_is_leaf (const obj_template_t *obj);
3611 
3612 
3619 extern boolean
3620  obj_is_leaf_list (const obj_template_t *obj);
3621 
3622 
3629 extern boolean
3630  obj_is_list (const obj_template_t *obj);
3631 
3632 
3639 extern boolean obj_in_list (const obj_template_t *obj);
3640 
3641 
3648 extern boolean
3649  obj_is_container (const obj_template_t *obj);
3650 
3651 
3658 extern boolean
3659  obj_is_choice (const obj_template_t *obj);
3660 
3661 
3668 extern boolean
3669  obj_is_case (const obj_template_t *obj);
3670 
3671 
3678 extern boolean
3679  obj_is_uses (const obj_template_t *obj);
3680 
3681 
3688 extern boolean
3689  obj_is_leafy (const obj_template_t *obj);
3690 
3691 
3698 extern boolean obj_is_terminal (const obj_template_t *obj);
3699 
3700 
3708 extern boolean
3709  obj_is_mandatory (obj_template_t *obj);
3710 
3711 
3722 extern boolean
3723  obj_is_mandatory_when_ex (obj_template_t *obj,
3724  boolean config_only);
3725 
3726 
3735 extern boolean
3736  obj_is_mandatory_when (obj_template_t *obj);
3737 
3738 
3747 extern boolean
3748  obj_is_cloned (const obj_template_t *obj);
3749 
3750 
3759 extern boolean
3760  obj_is_augclone (const obj_template_t *obj);
3761 
3762 
3770 extern boolean
3771  obj_is_augment (const obj_template_t *obj);
3772 
3773 
3781 extern boolean obj_in_augment (const obj_template_t *obj);
3782 
3783 
3791 extern boolean
3792  obj_is_refine (const obj_template_t *obj);
3793 
3794 
3803 extern boolean
3804  obj_is_data (const obj_template_t *obj);
3805 
3806 
3816 extern boolean
3817  obj_is_data_db (const obj_template_t *obj);
3818 
3819 
3827 extern boolean
3828  obj_is_data_node (const obj_template_t *obj);
3829 
3830 
3838 extern boolean
3839  obj_in_rpc (const obj_template_t *obj);
3840 
3841 
3848 extern boolean
3849  obj_in_rpc_reply (const obj_template_t *obj);
3850 
3851 
3858 extern boolean
3859  obj_in_notif (const obj_template_t *obj);
3860 
3861 
3868 extern boolean
3869  obj_is_rpc (const obj_template_t *obj);
3870 
3871 
3878 extern boolean obj_is_rpcio (const obj_template_t *obj);
3879 
3880 
3887 extern boolean obj_is_rpcio_input (const obj_template_t *obj);
3888 
3889 
3896 extern boolean
3897  obj_is_action (const obj_template_t *obj);
3898 
3899 
3906 extern boolean obj_in_action (const obj_template_t *obj);
3907 
3908 
3915 extern boolean
3916  obj_is_notif (const obj_template_t *obj);
3917 
3918 
3931 extern boolean
3932  obj_is_empty (const obj_template_t *obj);
3933 
3934 
3942 extern boolean
3943  obj_is_match (const obj_template_t *obj1,
3944  const obj_template_t *obj2);
3945 
3946 
3953 extern boolean
3954  obj_is_hidden (const obj_template_t *obj);
3955 
3956 
3963 extern boolean
3964  obj_is_root (const obj_template_t *obj);
3965 
3966 
3972 extern void
3973  obj_force_root (obj_template_t *obj);
3974 
3975 
3982 extern boolean
3983  obj_is_rpc_root (const obj_template_t *obj);
3984 
3985 
3992 extern boolean
3993  obj_is_password (const obj_template_t *obj);
3994 
3995 
4002 extern boolean
4003  obj_is_xsdlist (const obj_template_t *obj);
4004 
4005 
4012 extern boolean
4013  obj_is_cli (const obj_template_t *obj);
4014 
4015 
4024 extern boolean obj_is_dirty (const obj_template_t *obj,
4025  ncx_cfg_t cfgid);
4026 
4027 
4034 extern boolean
4035  obj_is_key (const obj_template_t *obj);
4036 
4037 
4044 extern boolean
4045  obj_is_abstract (const obj_template_t *obj);
4046 
4047 
4055 extern boolean obj_in_abstract (const obj_template_t *obj);
4056 
4057 
4064 extern boolean
4065  obj_is_deleted (const obj_template_t *obj);
4066 
4067 
4076 extern boolean
4077  obj_is_deleted_ex (const obj_template_t *obj);
4078 
4079 
4086 extern boolean
4087  obj_is_xpath_string (const obj_template_t *obj);
4088 
4089 
4097 extern boolean
4098  obj_is_schema_instance_string (const obj_template_t *obj);
4099 
4100 
4107 extern boolean
4108  obj_is_secure (const obj_template_t *obj);
4109 
4110 
4118 extern boolean
4119  obj_is_very_secure (const obj_template_t *obj);
4120 
4121 
4129 extern boolean
4130  obj_is_system_ordered (const obj_template_t *obj);
4131 
4132 
4140 extern boolean
4141  obj_is_np_container (const obj_template_t *obj);
4142 
4143 
4151 extern boolean
4152  obj_is_p_container (const obj_template_t *obj);
4153 
4154 
4163 extern boolean
4164  obj_is_enabled (obj_template_t *obj);
4165 
4166 
4173 extern boolean
4174  obj_has_iffeature (obj_template_t *obj);
4175 
4176 
4186 extern boolean
4187  obj_is_single_instance (obj_template_t *obj);
4188 
4189 
4197 extern boolean
4198  obj_is_short_case (obj_template_t *obj);
4199 
4200 
4209 extern boolean
4210  obj_is_top (const obj_template_t *obj);
4211 
4212 
4219 extern boolean
4220  obj_is_datapath (const obj_template_t *obj);
4221 
4222 
4234 extern boolean
4235  obj_ok_for_cli (obj_template_t *obj);
4236 
4237 
4245 extern boolean
4246  obj_has_children (obj_template_t *obj);
4247 
4248 
4257 extern boolean
4258  obj_has_ro_children (obj_template_t *obj);
4259 
4260 
4268 extern boolean obj_has_ro_descendants (obj_template_t *obj);
4269 
4270 
4278 extern boolean obj_has_rw_children (obj_template_t *obj);
4279 
4280 
4290 extern boolean obj_has_rw_children_ex (obj_template_t *obj,
4291  boolean term_only);
4292 
4293 
4300 extern boolean
4301  obj_rpc_has_input (obj_template_t *obj);
4302 
4303 
4310 extern boolean
4311  obj_rpc_has_output (obj_template_t *obj);
4312 
4313 
4322 extern boolean
4323  obj_has_when_stmts (obj_template_t *obj);
4324 
4325 
4331 extern obj_metadata_t *
4332  obj_new_metadata (void);
4333 
4334 
4344 extern void
4345  obj_free_metadata (obj_metadata_t *meta);
4346 
4347 
4355 extern status_t
4356  obj_add_metadata (obj_metadata_t *meta,
4357  obj_template_t *obj);
4358 
4359 
4367 extern obj_metadata_t *
4368  obj_find_metadata (const obj_template_t *obj,
4369  const xmlChar *name);
4370 
4371 
4378 extern obj_metadata_t *
4379  obj_first_metadata (const obj_template_t *obj);
4380 
4381 
4388 extern obj_metadata_t *
4389  obj_next_metadata (const obj_metadata_t *meta);
4390 
4391 
4402 extern void
4403  obj_sort_children (obj_template_t *obj);
4404 
4405 
4412 extern void
4413  obj_set_ncx_flags (obj_template_t *obj);
4414 
4415 
4423 extern uint32
4424  obj_enabled_child_count (obj_template_t *obj);
4425 
4426 
4436 extern void
4438  dlq_hdr_t *datadefQ,
4439  uint32 startindent,
4440  uint32 indent);
4441 
4442 
4449 extern const xmlChar *
4450  obj_get_keystr (obj_template_t *obj);
4451 
4452 
4458 extern void
4459  obj_delete_obsolete (dlq_hdr_t *objQ);
4460 
4461 
4468 extern const xmlChar *
4469  obj_get_altname (const obj_template_t *obj);
4470 
4471 
4479 extern obj_template_t *
4480  obj_get_leafref_targobj (obj_template_t *obj);
4481 
4482 
4490 extern obj_template_t *
4491  obj_get_augment_targobj (obj_template_t *obj);
4492 
4493 
4501 extern const xmlChar *
4502  obj_get_augment_target (obj_template_t *obj);
4503 
4504 
4511 extern boolean
4512  obj_is_external_augment (obj_template_t *obj);
4513 
4514 
4521 extern boolean
4522  obj_is_external_data_augment (obj_template_t *obj);
4523 
4524 
4532 extern boolean
4533  obj_is_cli_equals_ok (const obj_template_t *obj);
4534 
4535 
4543 extern boolean
4544  obj_is_cli_text_block (const obj_template_t *obj);
4545 
4546 
4554 extern boolean
4555  obj_is_sil_delete_children_first (const obj_template_t *obj);
4556 
4557 
4566 extern boolean
4567  obj_is_no_sil_delete_children_first (const obj_template_t *obj);
4568 
4569 
4576 extern void
4577  obj_add_child (obj_template_t *child, obj_template_t *parent);
4578 
4579 
4588 extern boolean
4589  obj_is_block_user_create (const obj_template_t *obj);
4590 
4591 
4600 extern boolean
4601  obj_is_block_user_update (const obj_template_t *obj);
4602 
4603 
4612 extern boolean
4613  obj_is_block_user_delete (const obj_template_t *obj);
4614 
4615 
4622 extern obj_iffeature_ptr_t *
4624 
4625 
4631 extern void obj_free_iffeature_ptr (obj_iffeature_ptr_t *iffptr);
4632 
4633 
4640 extern obj_iffeature_ptr_t *
4641  obj_first_iffeature_ptr (obj_template_t *obj);
4642 
4643 
4650 extern obj_iffeature_ptr_t *
4651  obj_next_iffeature_ptr (obj_iffeature_ptr_t *iffptr);
4652 
4653 
4660 extern ncx_backptr_t *
4661  obj_first_inherit_when_ptr (obj_template_t *obj);
4662 
4663 
4670 extern ncx_backptr_t *
4672 
4673 
4681 extern boolean
4682  obj_find_xpath_backptr (obj_template_t *obj,
4683  struct xpath_pcb_t_ *xpath);
4684 
4685 
4693 extern struct xpath_pcb_t_ *
4694  obj_next_xpath_backptr (obj_template_t *obj,
4695  struct xpath_pcb_t_ *xpath);
4696 
4697 
4704 extern struct xpath_pcb_t_ *
4705  obj_first_xpath_backptr (obj_template_t *obj);
4706 
4707 
4708 
4719 extern status_t
4720  obj_assign_xpath_backptr (obj_template_t *obj,
4721  struct xpath_pcb_t_ *xpath);
4722 
4723 
4733 extern void
4734  obj_clear_xpath_backptr (obj_template_t *obj,
4735  struct xpath_pcb_t_ *xpath);
4736 
4737 
4746 extern status_t
4747  obj_set_xpath_backptrs (obj_template_t *obj);
4748 
4749 
4758 extern void
4759  obj_flag_xpath_backptrs_dirty (obj_template_t *obj,
4760  ncx_cfg_t cfg_id,
4761  boolean flag);
4762 
4763 
4779 extern boolean
4780  obj_is_target_template (obj_template_t *obj);
4781 
4782 
4803 extern boolean
4804  obj_maybe_target_template (obj_template_t *obj);
4805 
4806 
4814 extern boolean
4815  obj_is_supported (obj_template_t *obj);
4816 
4817 
4830 extern void
4831  obj_delete_mod_children (obj_template_t *obj,
4832  ncx_module_t *mod);
4833 
4834 
4841 extern void
4842  obj_set_dup_local (obj_template_t *obj);
4843 
4844 
4853 extern boolean
4854  obj_is_dup_local (obj_template_t *obj);
4855 
4856 
4863 extern void
4864  obj_set_key_leaf (obj_template_t *obj,
4865  uint16 keynum);
4866 
4867 
4874 extern uint16
4875  obj_get_key_num (obj_template_t *obj);
4876 
4877 
4885 extern boolean
4886  obj_is_exclusive_rpc (const obj_template_t *obj);
4887 
4888 
4895 extern boolean
4896  obj_is_sil_force_replay (const obj_template_t *obj);
4897 
4898 
4905 extern boolean
4906  obj_is_sil_force_replace_replay (const obj_template_t *obj);
4907 
4908 
4915 extern void
4916  obj_set_sil_force_replace_replay (obj_template_t *obj);
4917 
4918 
4925 extern boolean obj_notif_enabled (const obj_template_t *obj);
4926 
4927 
4934 extern boolean obj_notif_log_drops (const obj_template_t *obj);
4935 
4936 
4943 extern void obj_set_notif_enabled (obj_template_t *obj,
4944  boolean enabled);
4945 
4946 
4953 extern void obj_set_notif_log_drops (const obj_template_t *obj,
4954  boolean enabled);
4955 
4956 
4964 extern boolean
4965  obj_unload_active (const obj_template_t *obj);
4966 
4967 
4974 extern boolean
4975  obj_is_obsolete (const obj_template_t *obj);
4976 
4977 
4985 extern boolean
4986  obj_parent_same_module (const obj_template_t *obj);
4987 
4988 
4995 extern void
4996  obj_set_sil_priority (obj_template_t *obj,
4997  uint8 prio);
4998 
4999 
5006 extern uint8
5007  obj_get_sil_priority (obj_template_t *obj);
5008 
5009 
5017 extern boolean
5018  obj_in_edit2_mode (obj_template_t *obj);
5019 
5020 
5027 extern ncx_leafref_class_t
5028  obj_get_leafref_class (obj_template_t *obj);
5029 
5030 
5038 extern boolean
5039  obj_delete_all_supported (obj_template_t *obj);
5040 
5041 
5048 extern boolean
5049  obj_is_crypt_hash (const obj_template_t *obj);
5050 
5051 
5062 extern void
5063  obj_number_data_object (obj_template_t *obj);
5064 
5065 
5071 extern obj_defval_tk_t *
5072  obj_new_defval_tk (void);
5073 
5074 
5080 extern void
5081  obj_free_defval_tk (obj_defval_tk_t *def);
5082 
5083 
5090 extern dlq_hdr_t *
5091  obj_get_defvalQ (obj_template_t *obj);
5092 
5093 
5100 extern obj_defval_tk_t *
5101  obj_first_defval_tk (const obj_refine_t *ref);
5102 
5103 
5110 extern obj_defval_tk_t *
5111  obj_next_defval_tk (const obj_defval_tk_t *defval_tk);
5112 
5113 #define obj_next_dev_defval_tk(D) obj_next_defval_tk(D)
5114 
5115 
5122 extern obj_defval_tk_t *
5123  obj_first_dev_defval_tk (const obj_deviate_t *dev);
5124 
5125 
5132 extern boolean
5133  obj_get_leaf_list_defset (const obj_template_t *obj);
5134 
5135 
5142 extern void
5143  obj_find_delete_defval (obj_template_t *obj,
5144  const xmlChar *defval);
5145 
5146 
5154 extern boolean
5155  obj_find_defval (obj_template_t *obj,
5156  const xmlChar *find_defval);
5157 
5158 
5165 extern void
5166  obj_delete_all_defvals (obj_template_t *obj);
5167 
5168 
5173 extern void
5174  obj_enter_xpath_mode (void);
5175 
5176 
5181 extern void
5182  obj_exit_xpath_mode (void);
5183 
5184 
5192 extern obj_key_t *
5193  obj_get_key_by_name (obj_template_t *obj,
5194  const xmlChar *keyname);
5195 
5196 
5203 extern ncx_yang_version_t
5204  obj_get_langver (obj_template_t *obj);
5205 
5206 
5216 extern boolean
5217  obj_is_abstract_ex (const obj_template_t *obj);
5218 
5219 
5225 extern void
5226  obj_set_abstract (obj_template_t *obj);
5227 
5228 
5237 extern boolean
5238  obj_is_final (obj_template_t *obj);
5239 
5240 
5246 extern void
5247  obj_force_disabled (obj_template_t *obj);
5248 
5249 
5250 
5251 #if defined(WITH_SNMP) && defined(WITH_RESTCONF)
5252 
5258 extern const xmlChar *
5259  obj_get_oid_string (obj_template_t *obj);
5260 
5261 
5272 extern obj_oid_t *
5273  obj_get_oid_struct (obj_template_t *obj,
5274  boolean *malloced);
5275 
5276 #endif // WITH_SNMP and WITH_RESTCONF
5277 
5278 
5286 extern status_t obj_fill_keystackQ (obj_template_t *obj,
5287  dlq_hdr_t *keystackQ);
5288 
5289 
5295 extern void obj_dump_keystackQ (dlq_hdr_t *keystackQ);
5296 
5297 
5304 extern void obj_clr_enable_chk (obj_template_t *obj);
5305 
5306 
5314 extern status_t
5315  obj_cache_datarule (obj_template_t *obj,
5316  void *rule);
5317 
5318 
5325 extern void
5326  obj_clear_datarule (obj_template_t *obj,
5327  const void *rule);
5328 
5329 
5337 extern boolean
5338  obj_match_datarule (obj_template_t *obj,
5339  void *rule);
5340 
5341 
5351 extern status_t
5352  obj_add_errmsg (obj_template_t *obj,
5353  const xmlChar *basestr,
5354  obj_errmsg_t **ret_errmsg);
5355 
5356 
5364 extern status_t
5365  obj_add_errmsg_parm (obj_errmsg_t *errmsg,
5366  const xmlChar *parmstr);
5367 
5368 
5377 extern status_t
5378  obj_add_errmsg_filter (obj_errmsg_t *errmsg,
5379  const xmlChar *parmstr,
5380  boolean is_errortag);
5381 
5382 
5398 extern boolean
5399  obj_has_get2cb (obj_template_t *obj);
5400 
5401 
5409 extern boolean
5410  obj_is_singular (const obj_template_t *obj);
5411 
5412 
5422 extern boolean
5423  obj_get_top_config_flag (const obj_template_t *obj);
5424 
5425 
5432 extern boolean
5433  obj_ok_for_nolock (const obj_template_t *obj);
5434 
5435 
5442 extern boolean
5443  obj_use_get_when_check (const obj_template_t *obj);
5444 
5445 
5452 extern boolean
5453  obj_has_mandatory_children (obj_template_t *obj);
5454 
5455 
5462 extern boolean obj_get_xpath_oper_ok (const obj_template_t *obj);
5463 
5464 
5470 extern void obj_set_xpath_oper_ok (obj_template_t *obj);
5471 
5472 
5480 extern boolean
5481  obj_is_in_aio_get2 (obj_template_t *obj);
5482 
5483 
5494 extern boolean
5495  obj_is_top_aio_get2 (obj_template_t *obj);
5496 
5497 
5504 extern obj_template_t *
5505  obj_get_top_aio_get2 (obj_template_t *child);
5506 
5507 
5514 extern boolean
5515  obj_has_aio_list (obj_template_t *obj);
5516 
5517 
5524 extern ncx_module_t *
5525  obj_get_real_mod (obj_template_t *obj);
5526 
5527 
5535 extern obj_template_t *
5536  obj_get_real_parent_aug (obj_template_t *obj);
5537 
5538 
5549 extern boolean
5550  obj_is_ancestor (const obj_template_t *ancestor,
5551  const obj_template_t *obj);
5552 
5553 
5559 extern void
5560  obj_ban_nolock_get (obj_template_t *obj);
5561 
5562 
5569 extern obj_template_t *
5570  obj_get_parent_choice (obj_template_t *obj);
5571 
5572 
5576 #ifdef __cplusplus
5577 } /* end extern 'C' */
5578 #endif
5579 
5580 #endif /* _H_obj */
status_t obj_add_errmsg_filter(obj_errmsg_t *errmsg, const xmlChar *parmstr, boolean is_errortag)
Add an errmsg filter for the object.
boolean obj_is_rpcio_input(const obj_template_t *obj)
Check if the object is an RPC IO node.
Definition: obj.c:14119
xmlns_id_t nsid
namespace ID assigned to the object at run-time
Definition: obj.h:1208
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:1361
const obj_key_t * obj_next_ckey(const obj_key_t *objkey)
Get the next key record: Const version.
Definition: obj.c:9676
uint8 obj_get_sil_priority(obj_template_t *obj)
Get the SIL priority field.
Definition: obj.c:17344
uint64 ncx_transaction_id_t
transaction is scoped to single session write operation on a config
Definition: ncxtypes.h:700
void obj_delete_all_defvals(obj_template_t *obj)
Delete all the original defaults for a leaf-list default for deviate replace default foo...
Definition: obj.c:17728
xmlChar * target
schema-node target to deviate
Definition: obj.h:1353
const xmlChar * obj_get_presence_string(const obj_template_t *obj)
Get the present-stmt value, if any.
Definition: obj.c:12919
boolean obj_in_rpc(const obj_template_t *obj)
Check if the object is in an rpc/input section.
Definition: obj.c:13986
boolean obj_ok_for_cli(obj_template_t *obj)
Figure out if the obj is OK for current CLI implementation.
Definition: obj.c:14886
obj_template_t * obj_get_default_parm(obj_template_t *obj)
Get the ncx:default-parm object for this object Only supported for OBJ_TYP_CONTAINER and OBJ_TYP_RPCI...
Definition: obj.c:13051
boolean obj_is_cli_text_block(const obj_template_t *obj)
Check if object is marked as ywx:cli-text-block.
Definition: obj.c:16125
uint32 obj_key_count(const obj_template_t *obj)
Get the number of keys for this object.
Definition: obj.c:9702
boolean obj_is_p_container(const obj_template_t *obj)
Check if the object is an Presence-container.
Definition: obj.c:14617
xmlChar * target
relative-path of the object to refine
Definition: obj.h:956
boolean obj_maybe_target_template(obj_template_t *obj)
Check a data node and its descendants match the template for NETCONF configuration sources Allow extr...
Definition: obj.c:16853
boolean maxset
max-elements set
Definition: obj.h:855
uint16 depth
internal nest depth of augment
Definition: obj.h:1060
obj_deviation_t * obj_new_deviation(void)
Malloc and initialize the fields in a an object deviation statement.
Definition: obj.c:9978
obj_template_t * obj_get_parent_choice(obj_template_t *obj)
Get the choice parent of the current object;.
Definition: obj.c:18803
uint32 maxelems
max-elements value
Definition: obj.h:889
gather node data into a simple struct.
Definition: xml_util.h:204
obj_template_t * obj_next_terminal_child(obj_template_t *obj)
Get the next child object if the specified object has any children; MUST BE TERMINAL NODE!! ...
Definition: obj.c:6971
boolean(* obj_walker_fn_t)(obj_template_t *obj, void *cookie1, void *cookie2, boolean nonconfig_warn)
child or descendant node search walker function
Definition: obj.h:1385
One YANG metadata (XML attribute) node.
Definition: obj.h:1268
used with various structs to cache back-ptrs the &#39;node&#39; pointer may or may not be malloced! the ncx_f...
Definition: ncxtypes.h:1393
boolean obj_is_block_user_create(const obj_template_t *obj)
Check if object is marked as ncx:user-write with create access disabled.
Definition: obj.c:16203
obj_metadata_t * obj_first_metadata(const obj_template_t *obj)
Get the first object metadata definition in the object.
Definition: obj.c:15272
ncx_iqual_t obj_get_iqualval_ex(obj_template_t *obj, boolean required)
Get the instance qualifier for this object.
Definition: obj.c:12567
void obj_free_key(obj_key_t *key)
Free a obj_key_t struct.
Definition: obj.c:9438
One YANG &#39;container&#39; definition.
Definition: obj.h:775
obj_template_t * obj_clone_template(ncx_module_t *mod, obj_template_t *srcobj, dlq_hdr_t *mobjQ)
Clone an obj_template_t Copy the pointers from the srcobj into the new obj.
Definition: obj.c:8728
boolean obj_in_edit2_mode(obj_template_t *obj)
Check if the object is an edit2 container or list or terminal node child in an edit2 container or lis...
Definition: obj.c:17410
void obj_enter_xpath_mode(void)
Enter xpath mode and start ignoring obj_is_enabled.
Definition: obj.c:17749
status_t obj_gen_object_id_prefix(const obj_template_t *obj, xmlChar **buff)
Malloc and Generate the object ID for an object node Use the prefix in every node.
Definition: obj.c:10099
This object represents a YANG 1.1 action schema node.
Definition: obj.h:714
obj_testflags_t desc_testflags
see AGT_TEST_FL_* definitions
Definition: obj.h:1160
boolean obj_is_dup_local(obj_template_t *obj)
Check if this object is one that has a duplicate sibling with the same local-name and different modul...
Definition: obj.c:17004
boolean obj_unload_active(const obj_template_t *obj)
Check if the module commit tests are disabled because a module unload is in progress.
Definition: obj.c:17224
This object represents a YANG case schema node.
Definition: obj.h:648
boolean obj_is_any(const obj_template_t *obj)
Get the config flag for the top-level object Check the specified object all the way to root...
Definition: obj.c:13414
obj_template_t * obj_next_terminal_child_nokey(obj_template_t *obj)
Get the next child object if the specified object has any children; MUST BE TERMINAL NODE!! ...
Definition: obj.c:7002
xmlChar * units
units if deviating the units
Definition: obj.h:1317
obj_template_t * obj_next_child_augok(obj_template_t *obj)
Get the next child object if the specified object has any children; return augment, not just obj_has_name!!!
Definition: obj.c:7072
void obj_set_notif_enabled(obj_template_t *obj, boolean enabled)
Set the notification object enabled flag.
Definition: obj.c:17177
This object represents a YANG list data node.
Definition: obj.h:637
log_debug_t
The debug level enumerations used in util/log.c.
Definition: log.h:386
boolean obj_has_mandatory_children(obj_template_t *obj)
Check if there are any mandatory children.
Definition: obj.c:18424
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:1358
obj_deviate_arg_t arg
deviate argument enum
Definition: obj.h:1305
obj_defval_tk_t * obj_first_defval_tk(const obj_refine_t *ref)
Get the first defval_tk entry.
Definition: obj.c:17589
boolean obj_get_min_elements(obj_template_t *obj, uint32 *minelems)
Get the min-elements clause for this object, if any.
Definition: obj.c:12655
void obj_ban_nolock_get(obj_template_t *obj)
Ban nolock-get for the object.
Definition: obj.c:18790
status_t obj_gen_object_id_xpath(const obj_template_t *obj, xmlChar **buff)
Malloc and Generate the object ID for an object node.
Definition: obj.c:10208
YANG deviate statement struct.
Definition: obj.h:1290
const xmlChar * obj_get_alt_description(const obj_template_t *obj)
obj_get_alt_description (DEPRECATED)
Definition: obj.c:10938
obj_augtype_t
enumeration for different YANG augment statement types
Definition: obj.h:729
boolean obj_is_sil_delete_children_first(const obj_template_t *obj)
Check if object is marked as ncx:sil-delete-children-first.
Definition: obj.c:16138
boolean obj_is_mandatory_when(obj_template_t *obj)
Figure out if the obj is YANG mandatory or not Check the when-stmts, not just mandatory-stmt.
Definition: obj.c:13766
boolean obj_is_external_data_augment(obj_template_t *obj)
Check if an object is an external augment of a data node.
Definition: obj.c:16089
void obj_set_xpath_oper_ok(obj_template_t *obj)
Set the object XPath oper OK flag.
Definition: obj.c:18677
boolean supported
mod loaded, not implemented
Definition: obj.h:1038
obj_template_t * obj_first_child(obj_template_t *obj)
Get the first child object if the specified object has any children.
Definition: obj.c:6774
boolean obj_any_rpcs(const dlq_hdr_t *datadefQ)
Check if there are any RPC methods in the datadefQ.
Definition: obj.c:9825
status_t obj_set_name(obj_template_t *obj, const xmlChar *objname)
Set the name field for this obj.
Definition: obj.c:10639
One YANG &#39;case&#39; definition.
Definition: obj.h:918
obj_template_t * obj_find_child_choice_case(obj_template_t *obj, const xmlChar *modname, const xmlChar *objname)
Find a child object with the specified Qname.
Definition: obj.c:6288
uint32 obj_get_child_count(const obj_template_t *obj)
Get the number of child nodes the object has.
Definition: obj.c:13024
ncx_access_t
NCX Access Control &#39;max-access&#39; enumeration values Note that access control is applied to the session...
Definition: ncxtypes.h:169
ncx_module_t * obj_get_mod_for_dump(obj_template_t *obj)
Get the module pointer for this object Use for sub-module !!! Used by yangdump-pro!!! ...
Definition: obj.c:12407
obj_template_t * obj_get_top_aio_get2(obj_template_t *child)
Find the top AIO object.
Definition: obj.c:18565
boolean obj_is_empty(const obj_template_t *obj)
Check if object was entered in empty fashion:
Definition: obj.c:14209
obj_key_t * obj_find_key2(dlq_hdr_t *que, obj_template_t *keyobj)
Find a specific key component, check for a specific node in case deep keys are supported, and to check for duplicates.
Definition: obj.c:9501
xmlChar * target
Xpath schema-node target to augment.
Definition: obj.h:1045
ncx_iffeature_t * iffeature
if-feature back-ptr
Definition: obj.h:1088
boolean obj_is_leafy(const obj_template_t *obj)
Check if object is a proper leaf or leaflist.
Definition: obj.c:13588
ncx_error_t def_tkerr
file and line info for compiler
Definition: obj.h:750
boolean obj_is_list(const obj_template_t *obj)
Check if object is a YANG list.
Definition: obj.c:13459
back-pointer to inherited if-feature statements
Definition: obj.h:1086
boolean obj_is_very_secure(const obj_template_t *obj)
Check if object is tagged ncx:very-secure.
Definition: obj.c:14561
xmlChar * name
name of leaf or anyxml/anydata
Definition: obj.h:800
const obj_template_t * obj_find_template_con(dlq_hdr_t *que, const xmlChar *modname, const xmlChar *objname)
Find an object with the specified name Return a const pointer; used by yangdump.
Definition: obj.c:5833
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:1073
obj_template_t * obj_first_child_augok(obj_template_t *obj)
Get the first child object if the specified object has any children.
Definition: obj.c:7034
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:842
obj_metadata_t * obj_new_metadata(void)
Malloc and initialize the fields in a an obj_metadata_t.
Definition: obj.c:15134
obj_unique_comp_t * obj_first_unique_comp(obj_unique_t *un)
Get the first identifier in a unique-stmt for a list.
Definition: obj.c:9365
obj_unique_comp_t * obj_new_unique_comp(void)
Alloc and Init a obj_unique_comp_t struct.
Definition: obj.c:9220
void obj_delete_obsolete(dlq_hdr_t *objQ)
Delete any obsolete child nodes within the specified object subtree.
Definition: obj.c:15939
uint32 flags
see OBJ_FL_* definitions
Definition: obj.h:1152
xmlns_id_t nsid
internal fields for manager and agent
Definition: obj.h:1037
struct obj_template_t_ * unobj
unique object target
Definition: obj.h:757
One YANG augment statement struct (top-level or in case-stmt.
Definition: obj.h:1043
uint32 minelems
min-elements value
Definition: obj.h:991
typ_template_t * obj_first_typedef(obj_template_t *obj)
Get the first local typedef for this object, if any.
Definition: obj.c:8340
This object represents a YANG uses schema node.
Definition: obj.h:659
xmlChar * units
units-stmt
Definition: obj.h:839
uint32 len
state : length
Definition: obj.h:1106
boolean obj_ok_for_nolock(const obj_template_t *obj)
check an object OK for nolock
Definition: obj.c:18344
boolean obj_is_cloned(const obj_template_t *obj)
Figure out if the obj is a cloned object, inserted via uses or augment statements.
Definition: obj.c:13779
ncx_error_t maxelems_tkerr
also maxset
Definition: obj.h:994
ncx_yang_version_t
enumeration for different YANG language versions
Definition: ncxtypes.h:948
obj_template_t * obj_previous_child(obj_template_t *obj)
Get the previous child object if the specified object has any children.
Definition: obj.c:7108
boolean obj_is_datapath(const obj_template_t *obj)
Check if object is marked as a ywx:datapath object.
Definition: obj.c:14871
boolean obj_is_deleted(const obj_template_t *obj)
Check if object has been deleted by a deviate not-supported.
Definition: obj.c:14449
YANG if-feature entry.
Definition: ncxtypes.h:888
boolean defset
T if any defaults specified for this leaf-list.
Definition: obj.h:851
status_t obj_copy_object_id(const obj_template_t *obj, xmlChar *buff, uint32 bufflen, uint32 *reallen)
Generate the object ID for an object node and copy to the buffer copy an object ID to a buffer...
Definition: obj.c:10439
One YANG &#39;leaf-list&#39; definition.
Definition: obj.h:834
uint16 keynum
internal key number only for keay leafs
Definition: obj.h:821
ncx_name_match_t
Node name match modes.
Definition: ncxtypes.h:673
One YANG data-def-stmt.
Definition: obj.h:1146
struct obj_template_t_ * usesobj
backptr to uses-obj if grouping expand
Definition: obj.h:1170
boolean obj_is_dirty(const obj_template_t *obj, ncx_cfg_t cfgid)
Check if object is marked as dirty (edited) for datastore validation purposes.
Definition: obj.c:14353
ncx_status_t status
status-stmt
Definition: obj.h:932
boolean isconfig
T:constraint is on config.
Definition: obj.h:769
void obj_dump_keystackQ(dlq_hdr_t *keystackQ)
Dump a keystackQ with backptrs to obj_template_t for key leafs.
Definition: obj.c:18091
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:812
const xmlChar * obj_get_units(obj_template_t *obj)
Get the units clause for this object, if any.
Definition: obj.c:12741
boolean obj_rpc_has_input(obj_template_t *obj)
Check if the RPC object has any real input children.
Definition: obj.c:15069
Discriminated union for all data typedefs.
Definition: typ.h:458
boolean obj_is_sil_force_replace_replay(const obj_template_t *obj)
Check if this object has the OBJ_FL_SIL_FORCE_REPLACE_REPLAY bit set.
Definition: obj.c:17113
boolean obj_is_key(const obj_template_t *obj)
Check if object is being used as a key leaf within a list.
Definition: obj.c:14388
void obj_set_ncx_flags(obj_template_t *obj)
Check the NCX appinfo extensions and set flags as needed.
Definition: obj.c:15408
xmlChar * name
notification name
Definition: obj.h:1067
uint8 obj_get_fraction_digits(const obj_template_t *obj)
Get the fraction-digits field from the object typdef.
Definition: obj.c:13297
obj_template_t * obj_clone_template_case(ncx_module_t *mod, obj_template_t *srcobj, dlq_hdr_t *mobjQ)
Clone an obj_template_t but make sure it is wrapped in a OBJ_TYP_CASE layer.
Definition: obj.c:9049
ncx_error_t descr_tkerr
the token for each sub-clause is saved because when the refine-stmt is parsed, the target is not know...
Definition: obj.h:970
boolean obj_is_data(const obj_template_t *obj)
Check if the object is defined within data or within a notification or RPC instead.
Definition: obj.c:13865
struct obj_template_t_ * leafrefobj
leafref obj backptr only if btyp == NCX_BT_LEAFREF
Definition: obj.h:829
boolean obj_is_cli(const obj_template_t *obj)
Check if object is marked as a CLI object.
Definition: obj.c:14332
grp_template_t * grp
non-NULL == in a grp.datadefQ
Definition: obj.h:1162
ncx_iqual_t
The instance qualifier types are borrowed from ABNF and RelaxNG.
Definition: ncxtypes.h:447
This object represents a YANG 1.1 anydata data node.
Definition: obj.h:707
This object represents a YANG augment statement.
Definition: obj.h:678
One YANG list key component.
Definition: obj.h:739
boolean obj_has_aio_list(obj_template_t *obj)
Check is AIO object is a list or if its parent is a list object.
Definition: obj.c:18608
boolean obj_is_container(const obj_template_t *obj)
Check if object is a YANG container.
Definition: obj.c:13515
const xmlChar * obj_get_first_default(const obj_template_t *obj, ncx_backptr_t **thisdef)
Get the first default value for the specified object.
Definition: obj.c:11723
void obj_traverse_keys(obj_template_t *obj, void *cookie1, void *cookie2, obj_walker_fn_t walkerfn)
Traverse the list keys with a callback function.
Definition: obj.c:9771
void obj_set_sil_force_replace_replay(obj_template_t *obj)
Set the object OBJ_FL_SIL_FORCE_REPLAY bit Set the object OBJ_FL_SIL_FORCE_REPLACE_REPLAY bit...
Definition: obj.c:17131
ncx_xpath_axis_t
XPath expression axis types.
Definition: ncxtypes.h:640
const xmlChar * obj_get_next_default(const obj_template_t *obj, ncx_backptr_t *lastdef, ncx_backptr_t **thisdef)
Get the next default value for the specified object.
Definition: obj.c:11772
boolean obj_has_typedefs(const obj_template_t *obj)
Check if the object has any nested typedefs in it.
Definition: obj.c:12018
boolean obj_is_obsolete(const obj_template_t *obj)
Check if the object has obsolete status.
Definition: obj.c:17244
xmlChar * valstr
state: value string
Definition: obj.h:1109
uint16 xmlns_id_t
integer handle for registered namespaces
Definition: xmlns.h:89
obj_oid_t * oid
SNMP OID for this object (set if needed)
Definition: obj.h:1165
const ncx_iffeature_t * obj_get_next_iffeature(const ncx_iffeature_t *iffeature)
Get the next if-feature clause (if any)
Definition: obj.c:13360
boolean minset
min-elements set
Definition: obj.h:886
boolean obj_find_all_descendants(ncx_module_t *exprmod, obj_walker_fn_t walkerfn, void *cookie1, void *cookie2, obj_template_t *startnode, const xmlChar *modname, const xmlChar *name, boolean configonly, boolean textmode, boolean useroot, boolean orself, boolean *fncalled)
Find all occurances of the specified node(s) within the descendants of the current node...
Definition: obj.c:7765
This object represents a YANG choice schema node.
Definition: obj.h:643
boolean seen
needed by yangdiff
Definition: obj.h:768
This object represents a YANG refine statement.
Definition: obj.h:667
const xmlChar * obj_get_typestr(const obj_template_t *obj)
Get the name of the object type.
Definition: obj.c:11457
ncx_transaction_id_t when_txid
current edit transaction ID for WHEN test default nodes pruning
Definition: obj.h:1238
Contains NCX constants.
boolean mandatory
deviating mandatory-stmt
Definition: obj.h:1332
boolean obj_is_supported(obj_template_t *obj)
Check an RPC node to check if it is supported or not It could be disabled at run-time without removin...
Definition: obj.c:16912
boolean obj_is_ancestor(const obj_template_t *ancestor, const obj_template_t *obj)
Check if an object is the ancestor of another.
Definition: obj.c:18756
representation of one module or submodule during and after parsing
Definition: ncxtypes.h:1055
grp_template_t * obj_first_grouping(obj_template_t *obj)
Get the first local grouping if any.
Definition: obj.c:8507
boolean expand_done
expand done flag
Definition: obj.h:949
This object represents a YANG 1.1 anydata data node.
Definition: obj.h:622
obj_key_t * obj_next_key(obj_key_t *objkey)
Get the next key record.
Definition: obj.c:9624
obj_type_t objtype
object type (def)
Definition: obj.h:1148
struct obj_template_t_ * augobj
backptr to augment-obj if augment expand
Definition: obj.h:1171
obj_testflags_t testflags
see AGT_TEST_FL_* definitions
Definition: obj.h:1159
const xmlChar * obj_get_help_description(const obj_template_t *obj)
Get the help description field for this obj Check if a &#39;help&#39; appinfo node is present.
Definition: obj.c:10987
void obj_clean_unique(obj_unique_t *un)
Clean a obj_unique_t struct.
Definition: obj.c:9187
boolean is_input
YPW-1406: the name can be changed temporarily in XPath validation so need a flag to tell if input or ...
Definition: obj.h:1010
ncx_error_t keytkerr
saved error info for key-stmt errors
Definition: obj.h:894
boolean obj_get_top_config_flag(const obj_template_t *obj)
Get the config flag for the top-level object.
Definition: obj.c:18315
boolean obj_is_rpc_root(const obj_template_t *obj)
Check if object is marked as an RPC root object.
Definition: obj.c:14292
unsigned long oid_t
data type used in SNMP
Definition: obj.h:1124
YANG deviation statement struct.
Definition: obj.h:1351
deviate add
Definition: obj.h:1282
void obj_set_key_leaf(obj_template_t *obj, uint16 keynum)
Set the key data for the object.
Definition: obj.c:17022
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:922
const xmlChar * obj_get_name(const obj_template_t *obj)
Get the name field for this obj.
Definition: obj.c:10576
ncx_error_t units_tkerr
same comment as tkerr
Definition: obj.h:1320
struct obj_template_t_ * targobj
resolved backptr to augmented object
Definition: obj.h:1054
ncx_status_t status
status-stmt
Definition: obj.h:790
boolean obj_is_case(const obj_template_t *obj)
Check if object is a YANG case.
Definition: obj.c:13555
boolean isduplicate
T: will be ignored by server.
Definition: obj.h:759
ncx_error_t tkerr
file and line info for compiler
Definition: obj.h:1274
boolean obj_has_ro_descendants(obj_template_t *obj)
Check if there are any accessible read-only descendant nodes within the object.
Definition: obj.c:14986
obj_template_t * obj_find_child_lrcheck(obj_template_t *obj, const xmlChar *modname, const xmlChar *objname)
Find a child object with the specified Qname LeafRef Check VERSION.
Definition: obj.c:6243
ncx_error_t minelems_tkerr
also minset
Definition: obj.h:1339
ncx_module_t * obj_get_mod(obj_template_t *obj)
Get the module pointer for this object.
Definition: obj.c:12328
boolean obj_is_schema_instance_string(const obj_template_t *obj)
Check if object is a schema-instance string.
Definition: obj.c:14530
uint32 minelems
min-elements value
Definition: obj.h:887
obj_template_t * obj_find_child(obj_template_t *obj, const xmlChar *modname, const xmlChar *objname)
Find a child object with the specified Qname.
Definition: obj.c:6203
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:1051
custom error message filter control block
Definition: obj.h:1093
ncx_status_t status
status-stmt
Definition: obj.h:818
boolean obj_is_terminal(const obj_template_t *obj)
Check if object is a proper leaf or leaflist or anyxml.
Definition: obj.c:13603
ncx_status_t status
status-stmt
Definition: obj.h:1058
ncx_status_t status
status-stmt
Definition: obj.h:948
void obj_add_child(obj_template_t *child, obj_template_t *parent)
Add a child object to the specified complex node.
Definition: obj.c:16175
status_t obj_gen_aughook_id(const obj_template_t *obj, xmlChar **buff)
Malloc and Generate the augment hook element name for the specified object.
Definition: obj.c:10511
ncx_status_t status
status-stmt
Definition: obj.h:857
void * commit_test_cb
backptr to the commit_test record for this object which will only exist if this object has &#39;must&#39; or ...
Definition: obj.h:1220
const xmlChar * obj_get_augment_target(obj_template_t *obj)
Get the target path string for an augments object.
Definition: obj.c:16049
void obj_find_delete_defval(obj_template_t *obj, const xmlChar *defval)
Find and delete a leaf-list default for deviate delete default foo.
Definition: obj.c:17665
obj_template_t * obj_find_template_test(dlq_hdr_t *que, const xmlChar *modname, const xmlChar *objname)
Find an object with the specified name Test version; do not set &#39;used&#39; flag.
Definition: obj.c:5871
boolean obj_find_xpath_backptr(obj_template_t *obj, struct xpath_pcb_t_ *xpath)
Find an xpath-expr backptr.
Definition: obj.c:16374
boolean obj_is_block_user_delete(const obj_template_t *obj)
Check if object is marked as ncx:user-write with delete access disabled.
Definition: obj.c:16245
boolean obj_is_exclusive_rpc(const obj_template_t *obj)
Check if this object has the OBJ_FL_EXCLUSIVE_WRITE bit set.
Definition: obj.c:17075
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:962
void obj_free_unique_comp(obj_unique_comp_t *unc)
Free a obj_unique_comp_t struct.
Definition: obj.c:9243
boolean obj_match_datarule(obj_template_t *obj, void *rule)
Check if the data-rule back-ptr applies to this node.
Definition: obj.c:18192
void obj_clear_xpath_backptr(obj_template_t *obj, struct xpath_pcb_t_ *xpath)
Clear an xpath-expr backptr.
Definition: obj.c:16568
obj_template_t * obj_find_template_all(ncx_module_t *mod, const xmlChar *modname, const xmlChar *objname)
Check if an obj_template_t in the mod->datadefQ or any of the include files used within the entire ma...
Definition: obj.c:6128
One YANG 1.1 default stored in a Q for refine and deviate.
Definition: obj.h:747
uint32 obj_key_count_to_root(obj_template_t *obj)
Check ancestor-or-self nodes until root reached Find all lists; Count the number of keys...
Definition: obj.c:9732
void obj_clr_enable_chk(obj_template_t *obj)
Force an object to re-evaluate the enable check Will call for all children.
Definition: obj.c:18025
boolean obj_is_refine(const obj_template_t *obj)
Figure out if the obj is a refinement object, within a uses-stmt.
Definition: obj.c:13852
xmlChar * name
case name
Definition: obj.h:919
uint32 minelems
deviating min-elements
Definition: obj.h:1338
This object represents a YANG leaf data node.
Definition: obj.h:631
boolean obj_get_leaf_list_defset(const obj_template_t *obj)
Get the defset flag for a leaf-list.
Definition: obj.c:17646
boolean obj_get_config_flag_check(const obj_template_t *obj, boolean *ingrp)
get config flag during YANG module checking
Definition: obj.c:13211
xmlChar * devmodname
set if not the targmod
Definition: obj.h:1365
uint32 xflags2
see OBJ_FL_* definitions
Definition: obj.h:1154
object specific variants
Definition: obj.h:1244
struct obj_template_t_ * defaultparm
the defaultparm is only used by yangcli-pro to allow 1 parameter in a command to be entered without a...
Definition: obj.h:1015
ncx_error_t config_tkerr
config and confset are in the object flags
Definition: obj.h:987
boolean obj_find_all_pfaxis(ncx_module_t *exprmod, obj_walker_fn_t walkerfn, void *cookie1, void *cookie2, obj_template_t *startnode, const xmlChar *modname, const xmlChar *name, boolean configonly, boolean dblslash, boolean textmode, boolean useroot, ncx_xpath_axis_t axis, boolean *fncalled)
Find all occurances of the specified preceding or following node(s).
Definition: obj.c:7947
void obj_delete_mod_children(obj_template_t *obj, ncx_module_t *mod)
Check the childQ for the specified object and remove all the objects from the specified module...
Definition: obj.c:16939
obj_template_t * obj_find_child_str(obj_template_t *obj, const xmlChar *modname, const xmlChar *objname, uint32 objnamelen)
Find a child object with the specified Qname.
Definition: obj.c:6646
boolean obj_is_anyxml(const obj_template_t *obj)
Check if object is an anyxml.
Definition: obj.c:13381
not set
Definition: obj.h:1281
void obj_force_root(obj_template_t *obj)
Set the object as an anydata type of root.
Definition: obj.c:14278
uint32 obj_enabled_child_count(obj_template_t *obj)
Get the count of the number of enabled child nodes for the object template.
Definition: obj.c:15788
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:945
void obj_clean_deviationQ(dlq_hdr_t *deviationQ)
Clean and free an Q of object deviation statements.
Definition: obj.c:10030
xmlChar * name
name of grouping to use
Definition: obj.h:939
boolean obj_get_xpath_oper_ok(const obj_template_t *obj)
Get the object XPath oper OK flag.
Definition: obj.c:18655
One YANG &#39;list&#39; definition.
Definition: obj.h:868
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:879
ncx_status_t status
status-stmt
Definition: obj.h:890
obj_key_t * obj_first_key(obj_template_t *obj)
Get the first key record.
Definition: obj.c:9537
uint32 yang_hash
experimental: not used
Definition: obj.h:1150
boolean obj_in_action(const obj_template_t *obj)
Check if the object is within or is an action method.
Definition: obj.c:14151
typ_template_t * obj_find_type(obj_template_t *obj, const xmlChar *typname)
Check if a typ_template_t in the obj typedefQ hierarchy.
Definition: obj.c:8239
boolean obj_is_leaf_list(const obj_template_t *obj)
Check if object is a proper leaf-list.
Definition: obj.c:13446
ncx_error_t tkerr
file and line info for compiler
Definition: obj.h:770
boolean maxset
max-elements set
Definition: obj.h:888
xmlChar * keystr
key-stmt (not required if config=false)
Definition: obj.h:873
ncx_error_t mandatory_tkerr
same comment as tkerr
Definition: obj.h:1335
boolean obj_is_system_ordered(const obj_template_t *obj)
Check if the object is system or user-ordered.
Definition: obj.c:14574
boolean set_snmp_flags
need SNMP flags
Definition: obj.h:1166
YANG module data structures Many internal representations of YANG module constructs.
xmlChar * ref
reference-stmt (not saved by server)
Definition: obj.h:783
boolean obj_has_ro_children(obj_template_t *obj)
Check if there are any accessible read-only child nodes within the object.
Definition: obj.c:14960
obj_unique_t * obj_new_unique(void)
Alloc and Init a obj_unique_t struct.
Definition: obj.c:9120
status_t obj_gen_object_id_error(const obj_template_t *obj, xmlChar **buff)
Malloc and Generate the object ID for an object node for errors.
Definition: obj.c:10256
status_t obj_copy_object_id_mod(const obj_template_t *obj, xmlChar *buff, uint32 bufflen, uint32 *reallen)
Generate the object ID for an object node and copy to the buffer copy an object ID to a buffer; Use m...
Definition: obj.c:10477
boolean obj_is_rpcio(const obj_template_t *obj)
Check if the object is an RPC IO node.
Definition: obj.c:14106
boolean obj_is_uses(const obj_template_t *obj)
Check if object is a YANG uses-stmt.
Definition: obj.c:13575
struct to remember error info tkc->cur_err will be checked before tkc->cur for error information ...
Definition: ncxtypes.h:812
boolean obj_has_rw_children(obj_template_t *obj)
Check if there are any accessible read-write child nodes within the object.
Definition: obj.c:15019
within data
Definition: obj.h:734
void obj_set_dup_local(obj_template_t *obj)
Flag the object as one that has a duplicate sibling with the same local-name and different module nam...
Definition: obj.c:16983
void obj_force_disabled(obj_template_t *obj)
Force an object to be disabled.
Definition: obj.c:18010
boolean obj_in_rpc_reply(const obj_template_t *obj)
Check if the object is in an rpc-reply/output section.
Definition: obj.c:14028
This object represents a YANG leaf-list data node.
Definition: obj.h:634
One YANG &#39;leaf&#39; or &#39;anyxml&#39; or &#39;anydata&#39; definition.
Definition: obj.h:798
uint8 silflags
see OBJ_FL_* definitions
Definition: obj.h:1157
ncx_status_t obj_get_status(const obj_template_t *obj)
Get the status field for this obj.
Definition: obj.c:10817
token parsing chain (main parser control block)
Definition: tk.h:415
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:845
const dlq_hdr_t * obj_get_cdatadefQ(const obj_template_t *obj)
Get a const pointer to the datadefQ (or caseQ) if this object has one.
Definition: obj.c:11597
uint32 uflags
see OBJ_FL_* definitions
Definition: obj.h:1156
const typ_def_t * obj_get_ctypdef(const obj_template_t *obj)
Get the typdef for the leaf or leaf-list : Const version.
Definition: obj.c:12159
typ_def_t * typdef
typedef for metadata
Definition: obj.h:1272
obj_deviate_arg_t
type of deviation for each deviate entry
Definition: obj.h:1280
xmlChar * presence
presence-stmt
Definition: obj.h:786
status_t obj_gen_object_id_unique(const obj_template_t *obj, const obj_template_t *stopobj, xmlChar **buff)
Malloc and Generate the object ID for a unique-stmt test.
Definition: obj.c:10318
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:973
boolean obj_is_choice(const obj_template_t *obj)
Check if object is a YANG choice.
Definition: obj.c:13535
deviate delete
Definition: obj.h:1283
void obj_free_template(obj_template_t *obj)
Scrub the memory in a obj_template_t by freeing all the sub-fields and then freeing the entire struct...
Definition: obj.c:5618
xmlChar * xpath
saved unique str for this obj
Definition: obj.h:758
obj_template_t * targobj
target object when resolved
Definition: obj.h:1355
obj_unique_t * obj_first_unique(obj_template_t *listobj)
Get the first unique-stmt for a list.
Definition: obj.c:9307
const xmlChar * obj_get_description(const obj_template_t *obj)
Get the description field for this obj.
Definition: obj.c:10877
ncx_status_t status
status-stmt
Definition: obj.h:1074
const obj_key_t * obj_first_ckey(const obj_template_t *obj)
Get the first key record: Const version.
Definition: obj.c:9595
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:1025
deviate replace
Definition: obj.h:1284
obj_unique_comp_t * obj_next_unique_comp(obj_unique_comp_t *uncomp)
Get the next unique-stmt component for a list.
Definition: obj.c:9392
dlq_hdr_t * obj_get_defvalQ(obj_template_t *obj)
Get the leaf-list default Q.
Definition: obj.c:17570
ncx_backptr_t * obj_first_inherit_when_ptr(obj_template_t *obj)
Get first xpath pointer struct.
Definition: obj.c:16335
boolean obj_in_abstract(const obj_template_t *obj)
Check if object is being used as an object identifier or error-info CHECK ENTIRE TREE UP TO ROOT...
Definition: obj.c:14415
struct xpath_pcb_t_ * obj_first_xpath_backptr(obj_template_t *obj)
Get the first xpath backptr.
Definition: obj.c:16406
boolean obj_has_name(const obj_template_t *obj)
Check if the specified object type has a name.
Definition: obj.c:10732
void obj_free_deviation(obj_deviation_t *deviation)
Clean and free an object deviation statement.
Definition: obj.c:10002
obj_template_t * obj_next_child(obj_template_t *obj)
Get the next child object if the specified object has any children.
Definition: obj.c:6936
boolean obj_is_final(obj_template_t *obj)
Check if the object template represents a fully expanded template or if it is inside a grouping...
Definition: obj.c:17987
boolean obj_is_augclone(const obj_template_t *obj)
Figure out if the obj is a cloned object, inserted via an augment statement.
Definition: obj.c:13793
XML Utilities.
xmlChar * descr
description-stmt (not saved by server)
Definition: obj.h:780
void obj_set_abstract(obj_template_t *obj)
Set the abstract flag for the yang-data node.
Definition: obj.c:17853
custom error message control block
Definition: obj.h:1114
One component in a YANG list unique target.
Definition: obj.h:755
boolean obj_delete_all_supported(obj_template_t *obj)
Check if the object supports a direct delete-all or remove-all operation.
Definition: obj.c:17466
obj_template_t * obj_find_template(dlq_hdr_t *que, const xmlChar *modname, const xmlChar *objname)
Find an object with the specified name.
Definition: obj.c:5765
void obj_free_deviate(obj_deviate_t *deviate)
Clean and free an object deviate statement.
Definition: obj.c:9917
ncx_error_t presence_tkerr
same comment as descr_tkerr applies here
Definition: obj.h:982
boolean obj_get_config_flag(const obj_template_t *obj)
Get the config flag for an obj_template_t Return the explicit value or the inherited value Also retur...
Definition: obj.c:11239
boolean obj_is_root(const obj_template_t *obj)
Check if object is marked as a root object.
Definition: obj.c:14262
boolean obj_any_notifs(const dlq_hdr_t *datadefQ)
Check if there are any notifications in the datadefQ.
Definition: obj.c:9860
obj_template_t * obj_match_child_str(obj_template_t *obj, const xmlChar *modname, const xmlChar *objname, uint32 objnamelen, uint32 *matchcount)
Match a child object with the specified Qname Find first command that matches all N chars of objname...
Definition: obj.c:6715
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:942
obj_defval_tk_t * obj_first_dev_defval_tk(const obj_deviate_t *dev)
Get the first defval_tk entry.
Definition: obj.c:17627
obj_template_t * obj_next_child_deep_ex(obj_template_t *obj, boolean stopnext)
Get the next child object if the specified object has any children.
Definition: obj.c:7229
rpc input
Definition: obj.h:731
ncx_error_t tkerr
file and line info for compiler
Definition: obj.h:1161
obj_template_t * obj_find_child_fast(obj_template_t *obj, xmlns_id_t nsid, const xmlChar *objname)
Find a child object with the specified Qname.
Definition: obj.c:6326
not set
Definition: obj.h:619
uint16 obj_get_key_num(obj_template_t *obj)
Get the key number for the object.
Definition: obj.c:17045
xmlns_id_t obj_get_nsid(const obj_template_t *obj)
Get the namespace ID for this object.
Definition: obj.c:12505
ncx_btype_t obj_get_basetype(const obj_template_t *obj)
Get the NCX base type enum for the object type.
Definition: obj.c:12187
status_t obj_gen_object_id(const obj_template_t *obj, xmlChar **buff)
Malloc and Generate the object ID for an object node.
Definition: obj.c:10052
boolean obj_is_target_template(obj_template_t *obj)
Check a data node and its descendants match the template for NETCONF configuration sources...
Definition: obj.c:16796
boolean obj_is_anydata(const obj_template_t *obj)
Check if object is an anydata.
Definition: obj.c:13394
boolean obj_notif_log_drops(const obj_template_t *obj)
Check if the event drops for the notification object is enabled.
Definition: obj.c:17161
rpc output
Definition: obj.h:732
boolean obj_is_data_node(const obj_template_t *obj)
Check if the object is a real node type.
Definition: obj.c:13940
ncx_backptr_t * obj_next_inherit_when_ptr(ncx_backptr_t *ptr)
Get the next xpath pointer struct.
Definition: obj.c:16353
const xmlChar * obj_get_keystr(obj_template_t *obj)
Get the key string for this list object.
Definition: obj.c:15911
void obj_clean_datadefQ(dlq_hdr_t *que)
Clean and free all the obj_template_t structs in the specified Q.
Definition: obj.c:8213
dlq_hdr_t * obj_get_appinfoQ(obj_template_t *obj)
Get the appinfoQ for this obj.
Definition: obj.c:11351
boolean obj_in_notif(const obj_template_t *obj)
Check if the object is in a notification.
Definition: obj.c:14062
boolean obj_is_hidden(const obj_template_t *obj)
Check if object is marked as a hidden object.
Definition: obj.c:14249
boolean obj_find_all_ancestors(ncx_module_t *exprmod, obj_walker_fn_t walkerfn, void *cookie1, void *cookie2, obj_template_t *startnode, const xmlChar *modname, const xmlChar *name, boolean configonly, boolean textmode, boolean useroot, boolean orself, boolean *fncalled)
Find all occurances of the specified node(s) within the ancestors of the current node.
Definition: obj.c:7572
obj_metadata_t * obj_next_metadata(const obj_metadata_t *meta)
Get the next object metadata definition in the object.
Definition: obj.c:15300
ncx_iqual_t obj_get_iqualval(obj_template_t *obj)
Get the instance qualifier for this object.
Definition: obj.c:12537
ncx_error_t minelems_tkerr
also minset
Definition: obj.h:992
obj_index_t last_index
internal numbering data for val_child ordering
Definition: obj.h:897
boolean obj_has_iffeature(obj_template_t *obj)
Check any if-feature statements exist for the specified object.
Definition: obj.c:14733
dlq_hdr_t * obj_get_leafrefQ(const obj_template_t *obj)
Get the leafrefQ for this obj.
Definition: obj.c:11423
boolean obj_is_match(const obj_template_t *obj1, const obj_template_t *obj2)
Check if one object is a match in identity with another one.
Definition: obj.c:14224
One YANG &#39;grouping&#39; definition – sibling set template.
Definition: grp.h:87
boolean obj_is_data_db(const obj_template_t *obj)
Check if the object is some sort of data Constrained to only check the config DB objects, not any notification or RPC objects.
Definition: obj.c:13898
boolean obj_is_augment(const obj_template_t *obj)
Check if the obj is an augment statement.
Definition: obj.c:13813
grp_template_t * grp
const back-ptr to grouping
Definition: obj.h:946
obj_key_t * obj_last_key(obj_template_t *obj)
Get the last key record.
Definition: obj.c:9566
boolean minset
min-elements set
Definition: obj.h:853
obj_type_t
enumeration for different YANG data def statement types the enum order is significant!!! do not chang...
Definition: obj.h:618
boolean obj_parent_same_module(const obj_template_t *obj)
Check if the object parent object is the same.
Definition: obj.c:17275
xmlChar * def
default value string
Definition: obj.h:749
struct obj_template_t_ * defaultparm
default parm for yangcli
Definition: obj.h:792
status_t obj_assign_xpath_backptr(obj_template_t *obj, struct xpath_pcb_t_ *xpath)
Set an xpath-expr backptr.
Definition: obj.c:16483
boolean obj_is_sil_force_replay(const obj_template_t *obj)
Check if this object has the OBJ_FL_SIL_FORCE_REPLAY bit set.
Definition: obj.c:17094
void obj_number_data_object(obj_template_t *obj)
Number the object tree; initial setup.
Definition: obj.c:17516
defines the snmp oid value, stored as an array of integers for easier comparision when performing AVL...
Definition: obj.h:1132
void obj_flag_xpath_backptrs_dirty(obj_template_t *obj, ncx_cfg_t cfg_id, boolean flag)
Check all the xpath backptr records for this object and set them to dirty or clean, based on input.
Definition: obj.c:16689
status_t obj_add_metadata(obj_metadata_t *meta, obj_template_t *obj)
Add the filled out object metadata definition to the object.
Definition: obj.c:15195
One YANG refine statement struct.
Definition: obj.h:954
ncx_transaction_id_t must_txid
current edit transaction ID for MUST test default nodes pruning
Definition: obj.h:1235
boolean empty
for display in yangdump
Definition: obj.h:1366
obj_template_t * obj_get_parent(obj_template_t *obj)
Get the parent of the current object.
Definition: obj.c:12789
xmlChar * name
choice name
Definition: obj.h:903
uint8 obj_testflags_t
object test flags
Definition: obj.h:1139
not set
Definition: obj.h:730
status_t
global error return code
Definition: status_enum.h:186
boolean obj_has_when_stmts(obj_template_t *obj)
Check if any when-stmts apply to this object Does not check if they are true, just any when-stmts pre...
Definition: obj.c:15093
obj_iffeature_ptr_t * obj_new_iffeature_ptr(ncx_iffeature_t *iff)
Malloc and initialize a new obj_iffeature_ptr_t struct.
Definition: obj.c:16263
obj_template_t * obj_get_leafref_targobj(obj_template_t *obj)
Get the target object for a leafref leaf or leaf-list.
Definition: obj.c:16009
boolean obj_is_mandatory_when_ex(obj_template_t *obj, boolean config_only)
Figure out if the obj is YANG mandatory or not Check the when-stmts, not just mandatory-stmt.
Definition: obj.c:13694
const xmlChar * obj_get_altname(const obj_template_t *obj)
Get the alt-name for this object, if any.
Definition: obj.c:15984
boolean obj_is_mandatory(obj_template_t *obj)
Figure out if the obj is YANG mandatory or not.
Definition: obj.c:13620
uint8 cnt
amount of Sub-Ids (max 128)
Definition: obj.h:1133
status_t obj_add_errmsg(obj_template_t *obj, const xmlChar *basestr, obj_errmsg_t **ret_errmsg)
Create a new obj_errmsg struct for the object.
boolean obj_is_xsdlist(const obj_template_t *obj)
Check if object is marked as an XSD list.
Definition: obj.c:14320
boolean obj_is_password(const obj_template_t *obj)
Check if object is marked as a password object.
Definition: obj.c:14305
status_t obj_gen_object_id_code(ncx_module_t *mod, const obj_template_t *obj, xmlChar **buff)
Malloc and Generate the object ID for an object node for C code usage generate a unique name for C co...
Definition: obj.c:10377
One YANG &#39;choice&#39; definition.
Definition: obj.h:902
ncx_error_t config_tkerr
same comment as tkerr
Definition: obj.h:1329
obj_template_t * obj_get_real_parent_aug(obj_template_t *obj)
Get the parent of the current object; skip OBJ_TYP_AUGMENT and return the actual parent.
Definition: obj.c:18723
obj_unique_t * obj_find_unique(dlq_hdr_t *que, const xmlChar *xpath)
Find a specific unique-stmt.
Definition: obj.c:9271
void obj_free_unique(obj_unique_t *un)
Free a obj_unique_t struct.
Definition: obj.c:9166
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:809
obj_template_t * obj_first_child_deep(obj_template_t *obj)
Get the first child object if the specified object has any children.
Definition: obj.c:7149
typ_def_t * typdef
typedef if deviating the type
Definition: obj.h:1311
xmlChar * name
leaf-list name
Definition: obj.h:836
This object represents a YANG notification statement.
Definition: obj.h:704
boolean obj_is_top(const obj_template_t *obj)
Check if the object is top-level object within the YANG module that defines it.
Definition: obj.c:14858
xmlChar * name
rpc method name
Definition: obj.h:1022
grp_template_t * obj_find_grouping(obj_template_t *obj, const xmlChar *grpname)
Check if a grp_template_t in the obj groupingQ hierarchy.
Definition: obj.c:8408
boolean obj_is_top_aio_get2(obj_template_t *obj)
Check if this object is a really top level holder of extension sil-aio-get2.
Definition: obj.c:18499
xmlChar * prefix
prefix present in uses-stmt
Definition: obj.h:938
obj_key_t * obj_find_key(dlq_hdr_t *que, const xmlChar *keycompname)
Find a specific key component by key leaf identifier name.
Definition: obj.c:9463
custom error message parameter control block
Definition: obj.h:1101
struct obj_template_t_ * leafrefobj
leafref obj backptr only if btyp == NCX_BT_LEAFREF
Definition: obj.h:863
This object represents a YANG rpc statement.
Definition: obj.h:687
const xmlChar * obj_get_type_name(const obj_template_t *obj)
Get the typename for an object.
Definition: obj.c:12470
status_t obj_cache_datarule(obj_template_t *obj, void *rule)
Set the data-rule back-ptr for this node.
Definition: obj.c:18123
status_t obj_get_child_node(obj_template_t *obj, obj_template_t *chobj, const xml_node_t *curnode, boolean xmlorder, dlq_hdr_t *force_modQ, obj_template_t **rettop, obj_template_t **retobj)
Get the correct child node for the specified parent and current XML node.
Definition: obj.c:12985
struct ncx_module_t_ * mod
object module and namespace ID assigned at runtime this can be changed over and over as a uses statem...
Definition: obj.h:1205
NETCONF protocol remote procedure call common definitions.
ncx_yang_version_t obj_get_langver(obj_template_t *obj)
Get the YANG version for this object.
Definition: obj.c:17805
boolean obj_is_block_user_update(const obj_template_t *obj)
Check if object is marked as ncx:user-write with update access disabled.
Definition: obj.c:16224
boolean is_action
YANG 1.1 only.
Definition: obj.h:1034
boolean obj_is_action(const obj_template_t *obj)
Check if the object is a YANG 1.1 action.
Definition: obj.c:14138
ncx_error_t type_tkerr
same comment as tkerr
Definition: obj.h:1314
obj_template_t * obj_get_augment_targobj(obj_template_t *obj)
Get the target object for an augments object.
Definition: obj.c:16030
boolean xpath_oper_ok
object OK for referencing oper-data in XPath
Definition: obj.h:1167
const xmlChar * obj_get_mod_name(const obj_template_t *obj)
Get the module name for this object.
Definition: obj.c:12286
obj_template_t * obj_find_template_top_ex(ncx_module_t *mod, const xmlChar *modname, const xmlChar *objname, ncx_name_match_t match_names, boolean alt_names, boolean dataonly, status_t *retres)
Check if an obj_template_t in the mod->datadefQ or any of the include files visible to this module...
Definition: obj.c:5957
boolean obj_get_config_flag_deep(const obj_template_t *obj)
get config flag during augment expand
Definition: obj.c:13120
xmlChar * presence
refining the presence-stmt
Definition: obj.h:979
const xmlChar * obj_get_default(const obj_template_t *obj)
Get the default value for the specified object.
Definition: obj.c:11680
obj_key_t * obj_get_key_by_name(obj_template_t *obj, const xmlChar *keyname)
Check the specified list to see if the string is a list key.
Definition: obj.c:17777
boolean obj_use_get_when_check(const obj_template_t *obj)
check an object needs to use a when-check for GET processing
Definition: obj.c:18393
boolean obj_get_max_elements(obj_template_t *obj, uint32 *maxelems)
Get the max-elements clause for this object, if any.
Definition: obj.c:12700
void * cbset
cbset is different based on the object type:
Definition: obj.h:1193
typ_def_t * obj_get_base_typdef(obj_template_t *obj)
Get the base typdef for the leaf or leaf-list.
Definition: obj.c:12130
NCX Syntax Token Handler.
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:876
void obj_sort_children(obj_template_t *obj)
Check all the child nodes of the specified object and rearrange them into alphabetical order...
Definition: obj.c:15329
xmlChar * matchstr
message string to match
Definition: obj.h:1095
Global error messages for status code enumerations.
obj_unique_t * obj_next_unique(obj_unique_t *un)
Get the next unique-stmt for a list.
Definition: obj.c:9339
boolean obj_notif_enabled(const obj_template_t *obj)
Check if the notification object is enabled.
Definition: obj.c:17145
obj_deviate_t * obj_new_deviate(void)
Malloc and initialize the fields in a an object deviate statement.
Definition: obj.c:9892
xmlChar * path
path of replacement data
Definition: obj.h:1103
boolean obj_is_rpc(const obj_template_t *obj)
Check if the object is an RPC method.
Definition: obj.c:14093
boolean obj_npcon_has_defaults_slow(obj_template_t *obj)
Check if the specified NP container has defaults within it Must be a config object!!! ...
Definition: obj.c:11886
void * yangmap_cb
if set, backptr to the nodemap in a YANG model mapping OBJ_IS_YANGMAP_SOURCE() indicates this is the ...
Definition: obj.h:1229
Parameter Type Handler.
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:1028
obj_defval_tk_t * obj_new_defval_tk(void)
Create a new object default tk record;.
Definition: obj.c:17535
obj_template_t * obj_new_rpcio(obj_template_t *rpcobj, const xmlChar *name)
Malloc and initialize the fields in a an obj_rpcio_t.
Definition: obj.c:8182
status_t obj_add_errmsg_parm(obj_errmsg_t *errmsg, const xmlChar *parmstr)
Add an errmsg parameter for the object.
obj_oid_t * obj_get_oid_struct(obj_template_t *obj, boolean *malloced)
Get malloced object OID structure that contains OID string and OID count.
Definition: obj.c:17933
boolean obj_is_xpath_string(const obj_template_t *obj)
Check if object is an XPath string.
Definition: obj.c:14504
boolean obj_is_singular(const obj_template_t *obj)
Check if the object can have only one instance or not.
Definition: obj.c:18279
const xmlChar * obj_get_oid_string(obj_template_t *obj)
Get object OID sting value.
Definition: obj.c:17875
ncx_status_t status
status-stmt
Definition: obj.h:1030
boolean config
deviating config-stmt
Definition: obj.h:1326
void obj_exit_xpath_mode(void)
Exit xpath mode and stop ignoring obj_is_enabled.
Definition: obj.c:17758
const xmlChar * obj_get_mod_prefix(const obj_template_t *obj)
Get the module prefix for this object.
Definition: obj.c:12235
struct xpath_pcb_t_ * obj_next_xpath_backptr(obj_template_t *obj, struct xpath_pcb_t_ *xpath)
Get the next XPath backptr.
Definition: obj.c:16426
boolean obj_get_config_flag2(const obj_template_t *obj, boolean *setflag)
Get the config flag for an obj_template_t Return the explicit value or the inherited value Also retur...
Definition: obj.c:11278
One YANG &#39;typedef&#39; definition – top-level type template.
Definition: typ.h:477
void * def_hook_cb
def_hook_cb is ncx_def_hook_cbfn_t callback function for Dynamic Default Hook callback.
Definition: obj.h:1262
uint16 obj_index_t
object index only applies to child nodes; this is assigned at runtime and any augments loaded at run-...
Definition: obj.h:725
uint8 sil_priority
picks SIL callback order
Definition: obj.h:1158
One YANG rpc-stmt struct.
Definition: obj.h:1020
boolean obj_is_np_container(const obj_template_t *obj)
Check if the object is an Non-Presence-container.
Definition: obj.c:14597
obj_template_t * obj_find_template_top_lrcheck(ncx_module_t *mod, const xmlChar *modname, const xmlChar *objname)
Check if an obj_template_t in the mod->datadefQ or any of the include files visible to this module (L...
Definition: obj.c:6085
boolean obj_is_abstract_ex(const obj_template_t *obj)
DUPLICATE FUNCTION OF obj_in_abstract()
Definition: obj.c:17834
const obj_template_t * obj_get_cparent(const obj_template_t *obj)
Get the parent of the current object CONST POINTER VERSION.
Definition: obj.c:12816
const xmlChar * obj_get_reference(const obj_template_t *obj)
Get the reference field for this obj.
Definition: obj.c:11117
xmlChar * name
list name
Definition: obj.h:870
uint32 xflags
see OBJ_FL_* definitions
Definition: obj.h:1153
obj_template_t * obj_first_terminal_child(obj_template_t *obj)
Get the first child object if the specified object has any children; MUST BE A TERMINAL NODE!!! ...
Definition: obj.c:6818
ncx_transaction_id_t edit_txid
current edit transaction ID for commit test pruning
Definition: obj.h:1232
obj_template_t * obj_first_terminal_child_nokey(obj_template_t *obj)
Get the first child object if the specified object has any children; MUST BE A TERMINAL NODE!!! ...
Definition: obj.c:6857
boolean obj_find_defval(obj_template_t *obj, const xmlChar *find_defval)
Find a default.
Definition: obj.c:17697
typ_def_t * obj_get_typdef(obj_template_t *obj)
Get the typdef for the leaf or leaf-list.
Definition: obj.c:12101
boolean obj_is_secure(const obj_template_t *obj)
Check if object is tagged ncx:secure.
Definition: obj.c:14548
obj_defval_tk_t * obj_next_defval_tk(const obj_defval_tk_t *defval_tk)
Get the next defval_tk entry.
Definition: obj.c:17608
ncx_access_t obj_get_max_access(const obj_template_t *obj)
Get the NCX max-access enum for an obj_template_t Return the explicit value or the inherited value...
Definition: obj.c:11305
case
Definition: obj.h:733
boolean notif_log_drops
log drops for this event type
Definition: obj.h:1080
obj_index_t index
object index for val_child ordering
Definition: obj.h:1163
status_t obj_fill_keystackQ(obj_template_t *obj, dlq_hdr_t *keystackQ)
Fill a keystackQ with backptrs to obj_template_t for key leafs.
Definition: obj.c:18051
void obj_free_metadata(obj_metadata_t *meta)
Scrub the memory in a obj_metadata_t by freeing all the sub-fields and then freeing the entire struct...
Definition: obj.c:15165
xmlChar * xpath
complete saved unique str
Definition: obj.h:766
boolean obj_npcon_has_defaults(obj_template_t *obj)
Check if the specified NP container has defaults within it Must be a config object!!! ...
Definition: obj.c:11862
ncx_error_t arg_tkerr
same comment as tkerr
Definition: obj.h:1308
const xmlChar * obj_get_deviate_arg(obj_deviate_arg_t devarg)
Get the deviate-arg string from its enumeration.
Definition: obj.c:9948
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:1070
boolean notif_enabled
enabled or disabled in server
Definition: obj.h:1079
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:1048
uint32 obj_get_real_level(const obj_template_t *obj)
Get the nest level for the specified object Top-level is &#39;1&#39; Does not count groupings as a level Does...
Definition: obj.c:11981
void obj_clear_datarule(obj_template_t *obj, const void *rule)
Clear the datarule back-ptr for this node.
Definition: obj.c:18158
uint32 minelems
min-elements value
Definition: obj.h:854
boolean obj_in_augment(const obj_template_t *obj)
Check if object is an augment or inside an augment CHECK ENTIRE TREE UP TO ROOT.
Definition: obj.c:13826
obj_template_t * obj_find_template_top(ncx_module_t *mod, const xmlChar *modname, const xmlChar *objname)
Check if an obj_template_t in the mod->datadefQ or any of the include files visible to this module...
Definition: obj.c:5913
boolean obj_rpc_has_output(obj_template_t *obj)
Check if the RPC object has any real output children.
Definition: obj.c:15080
boolean empty
deviate-stmt is empty
Definition: obj.h:1302
ncx_error_t mandatory_tkerr
mandatory and mandset are in the object flags
Definition: obj.h:990
boolean obj_is_deleted_ex(const obj_template_t *obj)
Check if object has been deleted by a deviate not-supported Or if its parent was deleted by deviation...
Definition: obj.c:14471
xmlChar * name
input or output
Definition: obj.h:1001
boolean obj_has_text_content(const obj_template_t *obj)
Check if the specified object type has a text content for XPath purposes.
Definition: obj.c:10784
ncx_transaction_id_t leafref_txid
current edit transaction ID for intermediate leafref processing
Definition: obj.h:1241
struct xpath_pcb_t_ * when
optional when clause
Definition: obj.h:1173
xmlns_id_t nsid
in case parent == NULL
Definition: obj.h:1273
boolean annotation
set from annotation
Definition: obj.h:1367
void * get2cb
get2fn is getcb_fn2_t for local GET2
Definition: obj.h:1196
typ_def_t * typdef
typedef for the data type
Definition: obj.h:848
boolean ordersys
ordered-by system or user
Definition: obj.h:885
One YANG &#39;notification&#39; clause definition.
Definition: obj.h:1065
ncx_leafref_class_t
Classification for the types of leafref path statements wrt/ how they can be cached.
Definition: ncxtypes.h:1434
const void * obj_get_description_addr(const obj_template_t *obj)
Get the address of the description field for this obj.
Definition: obj.c:11058
void obj_set_sil_priority(obj_template_t *obj, uint8 prio)
Set the SIL priority field.
Definition: obj.c:17319
status_t obj_set_named_type(void *pcb, tk_chain_t *tkc, ncx_module_t *mod, const xmlChar *typname, typ_def_t *typdef, obj_template_t *parent, grp_template_t *grp)
Resolve type test Called during phase 2 of module parsing.
Definition: obj.c:8582
struct obj_template_t_ * keyobj
backptr to key object
Definition: obj.h:741
uint32 maxelems
deviating max-elements
Definition: obj.h:1342
const xmlChar * obj_get_mod_version(const obj_template_t *obj)
Get the module version for this object.
Definition: obj.c:12444
uint32 obj_get_level(const obj_template_t *obj)
Get the nest level for the specified object Top-level is &#39;1&#39; Does not count groupings as a level...
Definition: obj.c:11943
One component in a YANG list unique target.
Definition: obj.h:764
boolean obj_is_no_sil_delete_children_first(const obj_template_t *obj)
Check if object is marked as ypx:no-sil-delete-children-first OR AN ANCESTOR IS MARKED.
Definition: obj.c:16152
const xmlChar * obj_get_info_description(const obj_template_t *obj)
Get the info description field for this obj Check if a &#39;info&#39; appinfo node is present.
Definition: obj.c:11023
void * obj_get_presence_string_field(const obj_template_t *obj)
Get the address ot the presence-stmt value, if any.
Definition: obj.c:12950
One YANG uses statement struct.
Definition: obj.h:937
void obj_set_notif_log_drops(const obj_template_t *obj, boolean enabled)
Set the event drops enabled flag for the notification object.
Definition: obj.c:17200
One YANG input-stmt or output-stmt struct.
Definition: obj.h:1000
boolean obj_find_all_children(ncx_module_t *exprmod, obj_walker_fn_t walkerfn, void *cookie1, void *cookie2, obj_template_t *startnode, const xmlChar *modname, const xmlChar *childname, boolean configonly, boolean textmode, boolean useroot)
Find all occurances of the specified node(s) within the children of the current node.
Definition: obj.c:7361
void obj_dump_child_list(log_debug_t lvl, dlq_hdr_t *datadefQ, uint32 startindent, uint32 indent)
Dump the object names in a datadefQ – just child level uses log_write_level() for writing ...
Definition: obj.c:15836
struct obj_template_t_ * targobj
resolved target object to refine
Definition: obj.h:959
xmlChar * name
metadata name
Definition: obj.h:1271
This object represents a YANG input or output statement.
Definition: obj.h:695
ncx_error_t tkerr
file and line info for compiler
Definition: obj.h:1364
void obj_free_defval_tk(obj_defval_tk_t *def)
Delete an object default tk record;.
Definition: obj.c:17552
struct obj_template_t_ * parent
obj containing metadata
Definition: obj.h:1270
boolean obj_has_children(obj_template_t *obj)
Check if there are any accessible nodes within the object.
Definition: obj.c:14941
dlq_hdr_t * obj_get_mustQ(const obj_template_t *obj)
Get the mustQ for this obj.
Definition: obj.c:11377
status_t res
parse status
Definition: obj.h:1368
ncx_cfg_t
hardwire the 3 standard configs
Definition: ncxtypes.h:535
obj_template_t * obj_get_real_parent(obj_template_t *obj)
Get the parent of the current object; skip OBJ_TYP_CHOICE and OBJ_TYP_CASE.
Definition: obj.c:12843
boolean obj_is_single_instance(obj_template_t *obj)
Check if the object is a single instance of if it allows multiple instances; check all of the ancesto...
Definition: obj.c:14779
ncx_error_t maxelems_tkerr
also maxset
Definition: obj.h:1343
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:907
uint32 maxelems
max-elements value
Definition: obj.h:856
uint32 maxelems
max-elements value
Definition: obj.h:993
obj_iffeature_ptr_t * obj_next_iffeature_ptr(obj_iffeature_ptr_t *iffptr)
Get the next if-feature pointer.
Definition: obj.c:16317
XML namespace support.
ncx_error_t ref_tkerr
same comment as descr_tkerr applies here
Definition: obj.h:976
NCX System Logging Manager.
xmlChar * langstr
language string
Definition: obj.h:1117
ncx_status_t status
status-stmt
Definition: obj.h:913
boolean obj_in_list(const obj_template_t *obj)
Check if object is nested within a list.
Definition: obj.c:13472
obj_key_t * obj_prev_key(obj_key_t *objkey)
Get the previous key record.
Definition: obj.c:9650
boolean caseQclone
flag caseQ is cloned
Definition: obj.h:912
obj_template_t * obj_next_child_deep(obj_template_t *obj)
Get the next child object if the specified object has any children.
Definition: obj.c:7203
obj_template_t * obj_new_template(obj_type_t objtype)
Malloc and initialize the fields in a an object template.
Definition: obj.c:5480
ncx_module_t * obj_get_real_mod(obj_template_t *obj)
Get the module struct for the submodule or main module with this object.
Definition: obj.c:18699
boolean seen
used by yangdiff
Definition: obj.h:742
YANG Grouping Statement Handler.
xmlChar * targmodname
target module name
Definition: obj.h:1354
obj_case_t * obj_find_case(obj_choice_t *choic, const xmlChar *modname, const xmlChar *casname)
Find a specified case arm by name.
Definition: obj.c:8135
void obj_free_iffeature_ptr(obj_iffeature_ptr_t *iffptr)
Free an obj_iffeature_ptr_t struct.
Definition: obj.c:16283
obj_template_t * obj_find_child_ex(obj_template_t *obj, const xmlChar *modname, const xmlChar *objname, ncx_name_match_t match_names, boolean alt_names, boolean dataonly, status_t *retres)
Find a child object with the specified Qname extended match modes.
Definition: obj.c:6383
ncx_status_t
enumeration for different YANG data-def status values
Definition: ncxtypes.h:570
boolean obj_is_abstract(const obj_template_t *obj)
Check if object is being used as an object identifier or error-info.
Definition: obj.c:14401
obj_iffeature_ptr_t * obj_first_iffeature_ptr(obj_template_t *obj)
Get first if-feature pointer.
Definition: obj.c:16299
status_t obj_gen_object_id_oid(ncx_module_t *mod, const obj_template_t *obj, xmlChar **buff)
Malloc and Generate the object ID for an object node Used for canonical ID string comparison to gener...
Definition: obj.c:10150
xmlChar * name
name of container
Definition: obj.h:777
boolean obj_has_rw_children_ex(obj_template_t *obj, boolean term_only)
Check if there are any accessible read-write child nodes within the object.
Definition: obj.c:15037
boolean obj_has_get2cb(obj_template_t *obj)
Check if current object has GET2 callback registered.
Definition: obj.c:18249
deviate not-supported
Definition: obj.h:1285
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:925
boolean in_data
defined in data, YANG 1.1 only
Definition: obj.h:1081
obj_template_t * obj_last_child(obj_template_t *obj)
Get the last child object if the specified object has any children.
Definition: obj.c:6894
obj_template_t * obj_get_default_case(obj_template_t *obj)
Get the default case for the specified OBJ_TYP_CHOICE object.
Definition: obj.c:11813
xmlChar * defval
default-stmt only in a leaf
Definition: obj.h:806
ncx_leafref_class_t obj_get_leafref_class(obj_template_t *obj)
Get the leafref class for a leafref object.
Definition: obj.c:17443
oid_t * oidc
OID component.
Definition: obj.h:1134
obj_metadata_t * obj_find_metadata(const obj_template_t *obj, const xmlChar *name)
Find the object metadata definition in the object.
Definition: obj.c:15232
status_t obj_set_xpath_backptrs(obj_template_t *obj)
Check a top-level data node and all its descendants to see if they have any XPath expressions that ne...
Definition: obj.c:16641
boolean obj_is_cli_equals_ok(const obj_template_t *obj)
Check if object is marked as ncx:default-parm-equals-ok.
Definition: obj.c:16112
boolean nameclone
the nameclone flag is set even though the clone bit is also set; this can probably be removed ...
Definition: obj.h:931
struct obj_template_t_ * parent
backptr to parent
Definition: obj.h:1169
boolean obj_is_in_aio_get2(obj_template_t *obj)
Check if this object is a child of a node with sil-aio-get2 extension setup or if this object itself ...
Definition: obj.c:18455
xmlChar * units
units-stmt only in a leaf
Definition: obj.h:803
const ncx_iffeature_t * obj_get_first_iffeature(const obj_template_t *obj)
Get the first if-feature clause (if any) for the specified object.
Definition: obj.c:13331
obj_template_t * obj_find_schema_template(dlq_hdr_t *que, const xmlChar *modname, const xmlChar *objname)
Find an object with the specified name For YANG schema-nodeid so NEVER lookdeep.
Definition: obj.c:5804
boolean obj_is_external_augment(obj_template_t *obj)
Check if an object is an external augment.
Definition: obj.c:16067
void obj_init_unique(obj_unique_t *un)
Init a obj_unique_t struct.
Definition: obj.c:9143
const obj_template_t * obj_get_real_cparent(const obj_template_t *obj)
Get the parent of the current object; skip OBJ_TYP_CHOICE and OBJ_TYP_CASE.
Definition: obj.c:12882
boolean obj_is_notif(const obj_template_t *obj)
Check if the object is a notification.
Definition: obj.c:14193
obj_key_t * obj_new_key(void)
Alloc and Init a obj_key_t struct.
Definition: obj.c:9415
ncx_btype_t
enumeration of the built-in NCX types These types cannot be overridden and cannot be imported ...
Definition: ncxtypes.h:200
boolean obj_in_submodule(obj_template_t *obj)
Check if the object is defined in a submodule.
Definition: obj.c:12369
boolean obj_is_enabled(obj_template_t *obj)
Check any if-feature statement that may cause the specified object to be invisible.
Definition: obj.c:14637
typ_def_t * typdef
typedef for the data type (leaf only)
Definition: obj.h:815
boolean ordersys
ordered-by system or user
Definition: obj.h:852
This object represents a YANG presence or non-presence container.
Definition: obj.h:628
const void * obj_get_reference_addr(const obj_template_t *obj)
Get the reference field for this obj.
Definition: obj.c:11176
const xmlChar * obj_get_mod_xmlprefix(const obj_template_t *obj)
Get the module prefix for this object.
Definition: obj.c:12266
boolean is_errortag
error-tag flag
Definition: obj.h:1096
boolean obj_is_leaf(const obj_template_t *obj)
Check if object is a proper leaf.
Definition: obj.c:13433
xmlChar * basestr
base string
Definition: obj.h:1116
dlq_hdr_t * obj_get_datadefQ(obj_template_t *obj)
Get the datadefQ (or caseQ) if this object has one.
Definition: obj.c:11517
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:910
boolean obj_is_short_case(obj_template_t *obj)
Check if the object is a short case statement.
Definition: obj.c:14808
xmlChar * defval
default case
Definition: obj.h:904
obj_augtype_t augtype
internal augment type enum
Definition: obj.h:1057
ncx_error_t tkerr
the error info for each sub-clause is saved because when the deviation-stmt is parsed, the target is not known yet so picking the correct variant such as type-stmt or refine-list-stmts needs to wait until the resolve phase
Definition: obj.h:1299
boolean obj_is_crypt_hash(const obj_template_t *obj)
Check if the object is a leaf of type crypt-hash.
Definition: obj.c:17481