yumapro  21.10T-8
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 #define OBJ_FL_DEF_DONE bit17
284 
285 /* indicates the object has defaults (valid if bit17 set) */
286 #define OBJ_FL_DEF bit18
287 
288 /* indicates the object is an RPC that is OK for library mode */
289 #define OBJ_FL_LIBMODE bit19
290 
291 /* indicates the object contains a smiv2 object identifier */
292 #define OBJ_FL_SMIV2_OID bit20
293 
294 /* indicates object is tagged ywx:no-nvstore */
295 #define OBJ_FL_NO_NVSTORE bit21
296 
297 /* object is tagged ncx:no-sil-delete-children-first */
298 #define OBJ_FL_NO_SIL_DELETE_CHILDREN_FIRST bit22
299 
300 /* object is tagged as a source node in a yangmap nodemap */
301 #define OBJ_FL_YANGMAP_SOURCE bit23
302 
303 /* object is tagged as a target node in a yangmap nodemap */
304 #define OBJ_FL_YANGMAP_TARGET bit24
305 
306 /* object is tagged as a child node in a yangmap nodemap */
307 #define OBJ_FL_YANGMAP_CHILD bit25
308 
309 /* object is tagged as a keymap node in a yangmap nodemap */
310 #define OBJ_FL_YANGMAP_KEY bit26
311 
312 /* indicates that DUP_LOCAL test has been done */
313 #define OBJ_FL_DUP_LOCAL_DONE bit27
314 
315 /* This bit is set in the agt_val_silcall to indicate that the
316  * Transaction Hook is already setup for the object and that
317  * any consecutive attempts to assign the hook to this object
318  * should be skipped
319  */
320 #define OBJ_FL_TRANS_HOOK_SET bit29
321 
322 /* This bit is set to indicate that the sil-test-get-when
323  * override flag is set for the object which is expected
324  * to be an operational data node
325  */
326 #define OBJ_FL_GET_WHEN_SET bit30
327 
328 /* This bit is set to indicate the value of the
329  * override flag and is only used if OBJ_FL_GET_WHEN_SET
330  * bit is set to 1
331  */
332 #define OBJ_FL_GET_WHEN bit31
333 
334 
335 /********* xflags2 field in obj_template_t *************/
336  /* xflags2 is a continuation of xflags bits */
337 
338 /* This bit is set to indicate that the sil-aio-get2
339  * All in One extension flag is set for the object.
340  */
341 #define OBJ_FL_AIO_GET2 bit0
342 
343 /* This flag indicates that this object has All in One children
344  * But itself it does not have this extension setup.
345  * Will be set only if the current object is GET2 object with
346  * GET2 flags setup.
347  *
348  * GET2 object but not All in One object, but a parent of AIO
349  */
350 #define OBJ_FL_AIO_PARENT bit1
351 
352 /* This bit is set to indicate that the sil-aio-get2
353  * All in One extension flag is set for the object and has XML
354  * parameter setup.
355  */
356 #define OBJ_FL_AIO_GET2_XML bit2
357 
358 /* This bit is set to indicate that the sil-aio-get2
359  * All in One extension flag is set for the object and has JSON
360  * parameter setup.
361  */
362 #define OBJ_FL_AIO_GET2_JSON bit3
363 
364 /* This bit is set to check whether the object has Set Default
365  * Hook callback and should invoke it in order to set custom
366  * system default value BUT only if there is no any YANG defaults.
367  */
368 #define OBJ_FL_DEF_HOOK bit4
369 
370 /* This bit indicates that the leaf or leaf-list is really
371  * an openconfig-hashed-value string not a plain string
372  * and not an ncx:password
373  */
374 #define OBJ_FL_OC_HASHED_VALUE bit5
375 
376 /* This bit is set to indicate that the object is NOT OK for nolock-get
377  * Use on config=false nodes that it is not safe to GET in the
378  * PTHREADS build without a rdlock on running
379  */
380 #define OBJ_FL_BAN_NOLOCK_GET bit6
381 
382 
383 /********* uflags field in obj_template_t *************/
384 
385 /* This field represents the user flags and no system bits
386  * are defined for this field. It is used by yang_obj_cb
387  * callback functions to set user-specific flags
388  */
389 
390 /********* silflags field in obj_template_t *************/
391 
392 /* This bit is set in agt_rpc to indicate the RPC is
393  * currently being invoked; If another session attempts
394  * to invoke the RPC while busy, and the obj_is_exclusive_rpc
395  * the RPC request will be rejected by the server
396  */
397 #define OBJ_FL_SIL_BUSY bit0
398 
399 #define OBJ_TYPE(OBJ) (OBJ)->objtype
400 
401 #define OBJ_INDEX(OBJ) (OBJ)->index
402 
403 /* mark the object as a top object since the yang_obj does
404  * not catch top-level uses from a grouping as a top object
405  */
406 #define OBJ_SET_TOP(OBJ) (OBJ)->flags |= OBJ_FL_TOP
407 
408 #define OBJ_SET_SIL_BUSY(OBJ) (OBJ)->silflags |= OBJ_FL_SIL_BUSY
409 
410 #define OBJ_CLEAR_SIL_BUSY(OBJ) (OBJ)->silflags &= ~OBJ_FL_SIL_BUSY
411 
412 #define OBJ_IS_SIL_BUSY(OBJ) ((OBJ)->silflags & OBJ_FL_SIL_BUSY)
413 
414 #define OBJ_GET_CBSET(OBJ) (OBJ)->cbset
415 
416 
417 /* Get2 support */
418 #define OBJ_SET_REMOTE_GET2(OBJ) (OBJ)->xflags |= OBJ_FL_REMOTE_GET2
419 
420 #define OBJ_CLEAR_REMOTE_GET2(OBJ) (OBJ)->xflags &= ~OBJ_FL_REMOTE_GET2
421 
422 #define OBJ_HAS_REMOTE_GET2(OBJ) ((OBJ)->xflags & OBJ_FL_REMOTE_GET2)
423 
424 #define OBJ_SET_GET2CB(OBJ, CB) (OBJ)->get2cb = CB
425 
426 #define OBJ_GET_GET2CB(OBJ) (getcb_fn2_t)(OBJ)->get2cb
427 
428 #define OBJ_SET_EDIT2_MODE(OBJ) (OBJ)->xflags |= OBJ_FL_EDIT2_MODE
429 
430 #define OBJ_IS_EDIT2_MODE(OBJ) ((OBJ)->xflags & OBJ_FL_EDIT2_MODE)
431 
432 
433 /* XPath tuning */
434 #define OBJ_SET_SKIP_LEAFREF(OBJ) (OBJ)->xflags |= OBJ_FL_SKIP_LEAFREF
435 
436 #define OBJ_IS_SKIP_LEAFREF(OBJ) ((OBJ)->xflags & OBJ_FL_SKIP_LEAFREF)
437 
438 
439 
440 /* Object YANG Hash */
441 #define OBJ_SET_YANG_HASH(OBJ) (OBJ)->xflags |= OBJ_FL_YANG_HASH
442 
443 #define OBJ_IS_YANG_HASH(OBJ) ((OBJ)->xflags & OBJ_FL_YANG_HASH)
444 
445 
446 /* Object Rehash */
447 #define OBJ_SET_YANG_REHASH(OBJ) (OBJ)->xflags |= OBJ_FL_YANG_REHASH
448 
449 #define OBJ_IS_YANG_REHASH(OBJ) ((OBJ)->xflags & OBJ_FL_YANG_REHASH)
450 
451 
452 /* CBSET Malloced */
453 #define OBJ_SET_CBSET_MALLOCED(OBJ) (OBJ)->xflags |= OBJ_FL_CBSET_MALLOCED
454 
455 #define OBJ_IS_CBSET_MALLOCED(OBJ) ((OBJ)->xflags & OBJ_FL_CBSET_MALLOCED)
456 
457 #define OBJ_CLEAR_CBSET_MALLOCED(OBJ) (OBJ)->xflags &= ~OBJ_FL_CBSET_MALLOCED
458 
459 /* Object is generic */
460 #define OBJ_SET_GENERIC(OBJ) (OBJ)->xflags |= OBJ_FL_GENERIC
461 
462 #define OBJ_IS_GENERIC(OBJ) ((OBJ)->xflags & OBJ_FL_GENERIC)
463 
464 
465 /* Object or children have a default value */
466 #define OBJ_SET_DEF_DONE(OBJ) (OBJ)->xflags |= OBJ_FL_DEF_DONE
467 
468 #define OBJ_IS_DEF_DONE(OBJ) ((OBJ)->xflags & OBJ_FL_DEF_DONE)
469 
470 #define OBJ_SET_DEF(OBJ) (OBJ)->xflags |= OBJ_FL_DEF
471 
472 #define OBJ_IS_DEF(OBJ) ((OBJ)->xflags & OBJ_FL_DEF)
473 
474 /* Object is an RPC that is allowed in library mode */
475 #define OBJ_SET_LIBMODE(OBJ) (OBJ)->xflags |= OBJ_FL_LIBMODE
476 
477 #define OBJ_IS_LIBMODE(OBJ) ((OBJ)->xflags & OBJ_FL_LIBMODE)
478 
479 #define OBJ_USER_FLAGS(OBJ) (OBJ)->uflags
480 
481 /* get the object pointer in an obj_key_t */
482 #define OBJ_KEY_OBJ(K) (K)->keyobj
483 
484 /* get the current edit transaction id;
485  * -- changed on each transaction this object is tested
486  */
487 #define OBJ_EDIT_TXID(OBJ) (OBJ)->edit_txid
488 
489 #define OBJ_EXTR_MUST_TXID(OBJ) (OBJ)->must_txid
490 #define OBJ_EXTR_WHEN_TXID(OBJ) (OBJ)->when_txid
491 #define OBJ_EXTR_LEAFREF_TXID(OBJ) (OBJ)->leafref_txid
492 
493 
494 /* Object is flagged no-nvstore */
495 #define OBJ_SET_NO_NVSTORE(OBJ) (OBJ)->xflags |= OBJ_FL_NO_NVSTORE
496 
497 #define OBJ_IS_NO_NVSTORE(OBJ) ((OBJ)->xflags & OBJ_FL_NO_NVSTORE)
498 
499 
500 /* Object is flagged yangmap-source */
501 #define OBJ_SET_YANGMAP_SOURCE(OBJ) \
502  (OBJ)->xflags |= OBJ_FL_YANGMAP_SOURCE
503 
504 #define OBJ_IS_YANGMAP_SOURCE(OBJ) \
505  ((OBJ)->xflags & OBJ_FL_YANGMAP_SOURCE)
506 
507 
508 /* Object is flagged yangmap-target */
509 #define OBJ_SET_YANGMAP_TARGET(OBJ) \
510  (OBJ)->xflags |= OBJ_FL_YANGMAP_TARGET
511 
512 #define OBJ_IS_YANGMAP_TARGET(OBJ) \
513  ((OBJ)->xflags & OBJ_FL_YANGMAP_TARGET)
514 
515 /* Object is flagged yangmap-childmap */
516 #define OBJ_SET_YANGMAP_CHILD(OBJ) \
517  (OBJ)->xflags |= OBJ_FL_YANGMAP_CHILD
518 
519 #define OBJ_IS_YANGMAP_CHILD(OBJ) \
520  ((OBJ)->xflags & OBJ_FL_YANGMAP_CHILD)
521 
522 /* Object is flagged yangmap-keymap */
523 #define OBJ_SET_YANGMAP_KEY(OBJ) \
524  (OBJ)->xflags |= OBJ_FL_YANGMAP_KEY
525 
526 #define OBJ_IS_YANGMAP_KEY(OBJ) \
527  ((OBJ)->xflags & OBJ_FL_YANGMAP_KEY)
528 
529 /* if OBJ_IS_YANGMAP_SOURCE : yangmap_cb == nodemap_t
530  * if OBJ_IS_YANGMAP_TARGET : yangmap_cb == nodemap_t
531  * if OBJ_IS_YANGMAP_CHILD : yangmap_cb == childmap_t
532  * if OBJ_IS_YANGMAP_KEY : yangmap_cb == keymap_t
533  */
534 #define OBJ_YANGMAP_CB(OBJ) (OBJ)->yangmap_cb
535 
536 /* Object DUP_LOCAL test has been done */
537 #define OBJ_SET_DUP_LOCAL_DONE(OBJ) \
538  (OBJ)->xflags |= OBJ_FL_DUP_LOCAL_DONE
539 
540 #define OBJ_IS_DUP_LOCAL_DONE(OBJ) \
541  ((OBJ)->xflags & OBJ_FL_DUP_LOCAL_DONE)
542 
543 
544 #define OBJ_RPC_SUPPORTED(OBJ) (OBJ)->def.rpc->supported
545 
546 
547 /* Trans Hook assignment bits */
548 #define OBJ_SET_TRANS_HOOK_SET(OBJ) (OBJ)->xflags |= OBJ_FL_TRANS_HOOK_SET
549 #define OBJ_IS_TRANS_HOOK_SET(OBJ) ((OBJ)->xflags & OBJ_FL_TRANS_HOOK_SET)
550 #define OBJ_CLEAR_TRANS_HOOK_SET(OBJ) (OBJ)->xflags &= ~OBJ_FL_TRANS_HOOK_SET
551 
552 
553 /* All in One assignment bits */
554 #define OBJ_SET_AIO_GET2(OBJ) (OBJ)->xflags2 |= OBJ_FL_AIO_GET2
555 #define OBJ_IS_AIO_GET2(OBJ) ((OBJ)->xflags2 & OBJ_FL_AIO_GET2)
556 
557 /* GET2 object but not All in One object, but a parent of AIO */
558 #define OBJ_SET_AIO_PARENT(OBJ) (OBJ)->xflags2 |= OBJ_FL_AIO_PARENT
559 #define OBJ_IS_AIO_PARENT(OBJ) ((OBJ)->xflags2 & OBJ_FL_AIO_PARENT)
560 
561 /* AIO with XML/JSON support flags*/
562 #define OBJ_SET_AIO_GET2_XML(OBJ) (OBJ)->xflags2 |= OBJ_FL_AIO_GET2_XML
563 #define OBJ_IS_AIO_GET2_XML(OBJ) ((OBJ)->xflags2 & OBJ_FL_AIO_GET2_XML)
564 
565 #define OBJ_SET_AIO_GET2_JSON(OBJ) (OBJ)->xflags2 |= OBJ_FL_AIO_GET2_JSON
566 #define OBJ_IS_AIO_GET2_JSON(OBJ) ((OBJ)->xflags2 & OBJ_FL_AIO_GET2_JSON)
567 
568 /* Dynamic Default Hook assignment bits */
569 #define OBJ_SET_DEF_HOOK(OBJ) (OBJ)->xflags2 |= OBJ_FL_DEF_HOOK
570 #define OBJ_IS_DEF_HOOK(OBJ) ((OBJ)->xflags2 & OBJ_FL_DEF_HOOK)
571 #define OBJ_CLEAR_DEF_HOOK(OBJ) (OBJ)->xflags2 &= ~OBJ_FL_DEF_HOOK
572 #define OBJ_GET_DEF_HOOK_CB(OBJ) (ncx_def_hook_cbfn_t)(OBJ)->def_hook_cb
573 
574 /* openconfig-hashed-value bit */
575 #define OBJ_SET_OC_HASHED_VALUE(OBJ) (OBJ)->xflags2 |= OBJ_FL_OC_HASHED_VALUE
576 #define OBJ_IS_OC_HASHED_VALUE(OBJ) ((OBJ)->xflags2 & OBJ_FL_OC_HASHED_VALUE)
577 
578 /* Static Ban Nock GET assignment bits */
579 #define OBJ_SET_BAN_NOLOCK_GET(OBJ) (OBJ)->xflags2 |= OBJ_FL_BAN_NOLOCK_GET
580 #define OBJ_IS_BAN_NOLOCK_GET(OBJ) ((OBJ)->xflags2 & OBJ_FL_BAN_NOLOCK_GET)
581 
582 
583 /********************************************************************
584 * *
585 * T Y P E S *
586 * *
587 *********************************************************************/
588 
589 // Header Only
612 typedef enum obj_type_t_ {
617 
623 
626 
629 
632 
638 
654 
662 
673 
682 
683 
699 
702 
709 } YPACK obj_type_t;
710 
711 
712 #define OBJ_TYP_LAST OBJ_TYP_ACTION
713 
719 typedef uint16 obj_index_t;
720 
721 
723 typedef enum obj_augtype_t_ {
729 } obj_augtype_t;
730 
731 
733 typedef struct obj_key_t_ {
734  dlq_hdr_t qhdr;
735  struct obj_template_t_ *keyobj;
736  boolean seen;
737 } YPACK obj_key_t;
738 
739 
741 typedef struct obj_defval_tk_t_ {
742  dlq_hdr_t qhdr;
743  xmlChar *def;
745 } YPACK obj_defval_tk_t;
746 
747 
749 typedef struct obj_unique_comp_t_ {
750  dlq_hdr_t qhdr;
751  struct obj_template_t_ *unobj;
752  xmlChar *xpath;
753  boolean isduplicate;
754 } YPACK obj_unique_comp_t;
755 
756 
758 typedef struct obj_unique_t_ {
759  dlq_hdr_t qhdr;
760  xmlChar *xpath;
761  dlq_hdr_t compQ;
762  boolean seen;
763  boolean isconfig;
765 } YPACK obj_unique_t;
766 
767 
769 typedef struct obj_container_t_ {
771  xmlChar *name;
772 
774  xmlChar *descr;
775 
777  xmlChar *ref;
778 
780  xmlChar *presence;
781  dlq_hdr_t *typedefQ;
782  dlq_hdr_t *groupingQ;
783  dlq_hdr_t *datadefQ;
785  dlq_hdr_t mustQ;
786  struct obj_template_t_ *defaultparm;
787  obj_index_t last_index;
788 } YPACK obj_container_t;
789 
790 
792 typedef struct obj_leaf_t_ {
794  xmlChar *name;
795 
797  xmlChar *units;
798 
800  xmlChar *defval;
801 
803  xmlChar *descr;
804 
806  xmlChar *ref;
807 
810 
813 
815  uint16 keynum;
816 
817  dlq_hdr_t mustQ;
820  dlq_hdr_t leafrefQ;
823  struct obj_template_t_ *leafrefobj;
824 } YPACK obj_leaf_t;
825 
826 
828 typedef struct obj_leaflist_t_ {
830  xmlChar *name;
831 
833  xmlChar *units;
834 
836  xmlChar *descr;
837 
839  xmlChar *ref;
840 
843 
845  boolean defset;
846  boolean ordersys;
847  boolean minset;
848  uint32 minelems;
849  boolean maxset;
850  uint32 maxelems;
852  dlq_hdr_t mustQ;
853  dlq_hdr_t leafrefQ;
854  dlq_hdr_t defvalQ;
857  struct obj_template_t_ *leafrefobj;
858 } YPACK obj_leaflist_t;
859 
860 
862 typedef struct obj_list_t_ {
864  xmlChar *name;
865 
867  xmlChar *keystr;
868 
870  xmlChar *descr;
871 
873  xmlChar *ref;
874  dlq_hdr_t *typedefQ;
875  dlq_hdr_t *groupingQ;
876  dlq_hdr_t *datadefQ;
877  dlq_hdr_t keyQ;
878  dlq_hdr_t uniqueQ;
879  boolean ordersys;
880  boolean minset;
881  uint32 minelems;
882  boolean maxset;
883  uint32 maxelems;
885  dlq_hdr_t mustQ;
889 
891  obj_index_t last_index;
892 } YPACK obj_list_t;
893 
894 
896 typedef struct obj_choice_t_ {
897  xmlChar *name;
898  xmlChar *defval;
901  xmlChar *descr;
902 
904  xmlChar *ref;
905  dlq_hdr_t *caseQ;
906  boolean caseQclone;
908 } YPACK obj_choice_t;
909 
910 
912 typedef struct obj_case_t_ {
913  xmlChar *name;
916  xmlChar *descr;
917 
919  xmlChar *ref;
920 
921  dlq_hdr_t *datadefQ;
925  boolean nameclone;
927 } YPACK obj_case_t;
928 
929 
931 typedef struct obj_uses_t_ {
932  xmlChar *prefix;
933  xmlChar *name;
936  xmlChar *descr;
937 
939  xmlChar *ref;
941  dlq_hdr_t *datadefQ;
943  boolean expand_done;
944 } YPACK obj_uses_t;
945 
946 
948 typedef struct obj_refine_t_ {
950  xmlChar *target;
951 
953  struct obj_template_t_ *targobj;
954 
956  xmlChar *descr;
957 
965 
967  xmlChar *ref;
968 
971 
973  xmlChar *presence;
974 
977 
978  dlq_hdr_t defval_tkQ;
982 
985  uint32 minelems;
987  uint32 maxelems;
989  dlq_hdr_t mustQ;
990 } YPACK obj_refine_t;
991 
992 
994 typedef struct obj_rpcio_t_ {
995  xmlChar *name;
996  dlq_hdr_t *typedefQ;
997  dlq_hdr_t *groupingQ;
998  dlq_hdr_t datadefQ;
999  dlq_hdr_t mustQ;
1004  boolean is_input;
1005 
1009  struct obj_template_t_ *defaultparm;
1010 } YPACK obj_rpcio_t;
1011 
1012 
1014 typedef struct obj_rpc_t_ {
1016  xmlChar *name;
1017 
1019  xmlChar *descr;
1020 
1022  xmlChar *ref;
1023 
1025  dlq_hdr_t *typedefQ;
1026  dlq_hdr_t *groupingQ;
1027  dlq_hdr_t datadefQ;
1028  boolean is_action;
1032  boolean supported;
1033 } YPACK obj_rpc_t;
1034 
1035 
1037 typedef struct obj_augment_t_ {
1039  xmlChar *target;
1040 
1042  xmlChar *descr;
1043 
1045  xmlChar *ref;
1046 
1048  struct obj_template_t_ *targobj;
1049 
1051  obj_augtype_t augtype;
1053  dlq_hdr_t datadefQ;
1054  uint16 depth;
1055 } YPACK obj_augment_t;
1056 
1057 
1059 typedef struct obj_notif_t_ {
1061  xmlChar *name;
1062 
1064  xmlChar *descr;
1065 
1067  xmlChar *ref;
1069  dlq_hdr_t *typedefQ;
1070  dlq_hdr_t *groupingQ;
1071  dlq_hdr_t datadefQ;
1072  dlq_hdr_t mustQ;
1073  boolean notif_enabled;
1075  boolean in_data;
1076 } YPACK obj_notif_t;
1077 
1078 
1080 typedef struct obj_iffeature_ptr_t_ {
1081  dlq_hdr_t qhdr;
1083 } YPACK obj_iffeature_ptr_t;
1084 
1085 
1087 typedef struct obj_errmsg_filter_t_ {
1088  dlq_hdr_t qhdr;
1089  xmlChar *matchstr;
1090  boolean is_errortag;
1091 } YPACK obj_errmsg_filter_t;
1092 
1093 
1095 typedef struct obj_errmsg_parm_t_ {
1096  dlq_hdr_t qhdr;
1097  xmlChar *path;
1100  uint32 len;
1101 
1103  xmlChar *valstr;
1104 } YPACK obj_errmsg_parm_t;
1105 
1106 
1108 typedef struct obj_errmsg_t_ {
1109  dlq_hdr_t qhdr;
1110  xmlChar *basestr;
1111  xmlChar *langstr;
1112  dlq_hdr_t parmQ;
1113  dlq_hdr_t filterQ;
1114 } YPACK obj_errmsg_t;
1115 
1116 
1118 typedef unsigned long oid_t;
1119 
1126 typedef struct obj_oid_t_ {
1127  uint8 cnt;
1128  oid_t *oidc;
1129 } YPACK obj_oid_t;
1130 
1131 
1133 typedef uint8 obj_testflags_t;
1134 
1135 
1140 typedef struct obj_template_t_ {
1141  dlq_hdr_t qhdr;
1142  obj_type_t objtype;
1144  uint32 yang_hash;
1146  uint32 flags;
1147  uint32 xflags;
1148  uint32 xflags2;
1150  uint32 uflags;
1151  uint8 silflags;
1153  obj_testflags_t testflags;
1154  obj_testflags_t desc_testflags;
1157  obj_index_t index;
1159  obj_oid_t *oid;
1160  boolean set_snmp_flags;
1161  boolean xpath_oper_ok;
1163  struct obj_template_t_ *parent;
1164  struct obj_template_t_ *usesobj;
1165  struct obj_template_t_ *augobj;
1167  struct xpath_pcb_t_ *when;
1168  dlq_hdr_t metadataQ;
1169  dlq_hdr_t appinfoQ;
1170  dlq_hdr_t iffeatureQ;
1172  dlq_hdr_t inherited_iffeatureQ;
1175  dlq_hdr_t inherited_whenQ;
1176 
1178  dlq_hdr_t *dataruleQ;
1179 
1187  void *cbset;
1188 
1190  void *get2cb;
1191 
1199  struct ncx_module_t_ *mod;
1200 
1203 
1205  struct xpath_pcb_t_ *xpath_backptr[OBJ_NUM_XPATH_BACKPTRS];
1206 
1208  dlq_hdr_t xpath_backptrQ; // backptr to xpath_pcb_t
1209 
1215 
1217  dlq_hdr_t *errmsgQ; // Q of obj_errmsg_t
1218 
1223  void *yangmap_cb;
1224 
1227 
1230 
1233 
1236 
1238  union def_ {
1239  obj_container_t *container;
1240  obj_leaf_t *leaf;
1241  obj_leaflist_t *leaflist;
1242  obj_list_t *list;
1243  obj_choice_t *choic;
1244  obj_case_t *cas;
1245  obj_uses_t *uses;
1246  obj_refine_t *refine;
1247  obj_augment_t *augment;
1248  obj_rpc_t *rpc;
1249  obj_rpcio_t *rpcio;
1250  obj_notif_t *notif;
1251  } def;
1252 
1257 
1258 } YPACK obj_template_t;
1259 
1260 
1262 typedef struct obj_metadata_t_ {
1263  dlq_hdr_t qhdr;
1264  struct obj_template_t_ *parent;
1265  xmlChar *name;
1269  boolean typdef_copy;
1270 } YPACK obj_metadata_t;
1271 
1272 
1274 typedef enum obj_deviate_arg_t_ {
1280 } YPACK obj_deviate_arg_t;
1281 
1282 
1284 typedef struct obj_deviate_t_ {
1285  dlq_hdr_t qhdr;
1294 
1296  boolean empty;
1297 
1299  obj_deviate_arg_t arg;
1300 
1303 
1306 
1309 
1311  xmlChar *units;
1312 
1315 
1317  dlq_hdr_t defval_tkQ;
1318 
1320  boolean config;
1321 
1324 
1326  boolean mandatory;
1327 
1330 
1332  uint32 minelems;
1336  uint32 maxelems;
1338  dlq_hdr_t mustQ;
1339  dlq_hdr_t uniqueQ;
1340  dlq_hdr_t appinfoQ;
1341 } YPACK obj_deviate_t;
1342 
1343 
1345 typedef struct obj_deviation_t_ {
1346  dlq_hdr_t qhdr;
1347  xmlChar *target;
1348  xmlChar *targmodname;
1349  obj_template_t *targobj;
1352  xmlChar *descr;
1353 
1355  xmlChar *ref;
1356 
1359  xmlChar *devmodname;
1360  boolean empty;
1361  boolean annotation;
1363  dlq_hdr_t deviateQ;
1364  dlq_hdr_t appinfoQ;
1365 } YPACK obj_deviation_t;
1366 
1367 
1378 typedef boolean
1379  (*obj_walker_fn_t) (obj_template_t *obj,
1380  void *cookie1,
1381  void *cookie2,
1382  boolean nonconfig_warn);
1383 
1384 
1385 #define OBJ_SET_TESTFLAGS(OBJ, FL) (OBJ)->testflags = FL
1386 
1387 #define OBJ_GET_TESTFLAGS(OBJ) (OBJ)->testflags
1388 
1389 #define OBJ_SET_DESC_TESTFLAGS(OBJ, FL) (OBJ)->desc_testflags = FL
1390 
1391 #define OBJ_GET_DESC_TESTFLAGS(OBJ) (OBJ)->desc_testflags
1392 
1393 #define OBJ_UPDATE_DESC_TESTFLAGS(OBJ, FL) (OBJ)->desc_testflags |= FL
1394 
1397 /********************************************************************
1398 * *
1399 * F U N C T I O N S *
1400 * *
1401 *********************************************************************/
1402 
1419 extern obj_template_t *
1420  obj_new_template (obj_type_t objtype);
1421 
1422 
1432 extern void
1433  obj_free_template (obj_template_t *obj);
1434 
1435 
1448 extern obj_template_t *
1449  obj_find_template (dlq_hdr_t *que,
1450  const xmlChar *modname,
1451  const xmlChar *objname);
1452 
1453 
1465 extern obj_template_t *
1466  obj_find_schema_template ( dlq_hdr_t *que,
1467  const xmlChar *modname,
1468  const xmlChar *objname );
1469 
1470 
1482 extern const obj_template_t *
1483  obj_find_template_con (dlq_hdr_t *que,
1484  const xmlChar *modname,
1485  const xmlChar *objname);
1486 
1487 
1499 extern obj_template_t *
1500  obj_find_template_test (dlq_hdr_t *que,
1501  const xmlChar *modname,
1502  const xmlChar *objname);
1503 
1504 
1518 extern obj_template_t *
1520  const xmlChar *modname,
1521  const xmlChar *objname);
1522 
1523 
1539 extern obj_template_t *
1541  const xmlChar *modname,
1542  const xmlChar *objname);
1543 
1544 
1566 extern obj_template_t *
1568  const xmlChar *modname,
1569  const xmlChar *objname,
1570  ncx_name_match_t match_names,
1571  boolean alt_names,
1572  boolean dataonly,
1573  status_t *retres);
1574 
1575 
1589 extern obj_template_t *
1591  const xmlChar *modname,
1592  const xmlChar *objname);
1593 
1594 
1611 extern obj_template_t *
1612  obj_find_child (obj_template_t *obj,
1613  const xmlChar *modname,
1614  const xmlChar *objname);
1615 
1616 
1633 extern obj_template_t *
1634  obj_find_child_lrcheck (obj_template_t *obj,
1635  const xmlChar *modname,
1636  const xmlChar *objname);
1637 
1638 
1655 extern obj_template_t *
1656  obj_find_child_choice_case (obj_template_t *obj,
1657  const xmlChar *modname,
1658  const xmlChar *objname);
1659 
1660 
1675 extern obj_template_t *
1676  obj_find_child_fast (obj_template_t *obj,
1677  xmlns_id_t nsid,
1678  const xmlChar *objname);
1679 
1680 
1705 extern obj_template_t *
1706  obj_find_child_ex (obj_template_t *obj,
1707  const xmlChar *modname,
1708  const xmlChar *objname,
1709  ncx_name_match_t match_names,
1710  boolean alt_names,
1711  boolean dataonly,
1712  status_t *retres);
1713 
1714 
1725 extern obj_template_t *
1726  obj_find_child_str (obj_template_t *obj,
1727  const xmlChar *modname,
1728  const xmlChar *objname,
1729  uint32 objnamelen);
1730 
1731 
1753 extern obj_template_t *
1754  obj_match_child_str (obj_template_t *obj,
1755  const xmlChar *modname,
1756  const xmlChar *objname,
1757  uint32 objnamelen,
1758  uint32 *matchcount);
1759 
1760 
1771 extern obj_template_t *
1772  obj_first_child (obj_template_t *obj);
1773 
1774 
1785 extern obj_template_t *
1786  obj_first_terminal_child (obj_template_t *obj);
1787 
1788 
1799 extern obj_template_t *
1800  obj_first_terminal_child_nokey (obj_template_t *obj);
1801 
1802 
1813 extern obj_template_t *
1814  obj_last_child (obj_template_t *obj);
1815 
1816 
1827 extern obj_template_t *
1828  obj_next_child (obj_template_t *obj);
1829 
1830 
1841 extern obj_template_t *
1842  obj_next_terminal_child (obj_template_t *obj);
1843 
1844 
1855 extern obj_template_t *
1856  obj_next_terminal_child_nokey (obj_template_t *obj);
1857 
1858 
1869 extern obj_template_t *
1870  obj_first_child_augok (obj_template_t *obj);
1871 
1872 
1883 extern obj_template_t *
1884  obj_next_child_augok (obj_template_t *obj);
1885 
1886 
1897 extern obj_template_t *
1898  obj_previous_child (obj_template_t *obj);
1899 
1900 
1912 extern obj_template_t *
1913  obj_first_child_deep (obj_template_t *obj);
1914 
1915 
1927 extern obj_template_t *
1928  obj_next_child_deep (obj_template_t *obj);
1929 
1930 
1947 extern obj_template_t *
1948  obj_next_child_deep_ex (obj_template_t *obj,
1949  boolean stopnext);
1950 
1951 
1987 extern boolean
1989  obj_walker_fn_t walkerfn,
1990  void *cookie1,
1991  void *cookie2,
1992  obj_template_t *startnode,
1993  const xmlChar *modname,
1994  const xmlChar *childname,
1995  boolean configonly,
1996  boolean textmode,
1997  boolean useroot);
1998 
1999 
2039 extern boolean
2041  obj_walker_fn_t walkerfn,
2042  void *cookie1,
2043  void *cookie2,
2044  obj_template_t *startnode,
2045  const xmlChar *modname,
2046  const xmlChar *name,
2047  boolean configonly,
2048  boolean textmode,
2049  boolean useroot,
2050  boolean orself,
2051  boolean *fncalled);
2052 
2053 
2093 extern boolean
2095  obj_walker_fn_t walkerfn,
2096  void *cookie1,
2097  void *cookie2,
2098  obj_template_t *startnode,
2099  const xmlChar *modname,
2100  const xmlChar *name,
2101  boolean configonly,
2102  boolean textmode,
2103  boolean useroot,
2104  boolean orself,
2105  boolean *fncalled);
2106 
2107 
2150 extern boolean
2152  obj_walker_fn_t walkerfn,
2153  void *cookie1,
2154  void *cookie2,
2155  obj_template_t *startnode,
2156  const xmlChar *modname,
2157  const xmlChar *name,
2158  boolean configonly,
2159  boolean dblslash,
2160  boolean textmode,
2161  boolean useroot,
2162  ncx_xpath_axis_t axis,
2163  boolean *fncalled);
2164 
2165 
2174 extern obj_case_t *
2175  obj_find_case (obj_choice_t *choic,
2176  const xmlChar *modname,
2177  const xmlChar *casname);
2178 
2179 
2180 
2191 extern obj_template_t *
2192  obj_new_rpcio (obj_template_t *rpcobj,
2193  const xmlChar *name);
2194 
2195 
2201 extern void
2202  obj_clean_datadefQ (dlq_hdr_t *que);
2203 
2204 
2212 extern typ_template_t *
2213  obj_find_type (obj_template_t *obj,
2214  const xmlChar *typname);
2215 
2216 
2223 extern typ_template_t *
2224  obj_first_typedef (obj_template_t *obj);
2225 
2226 
2234 extern grp_template_t *
2235  obj_find_grouping (obj_template_t *obj,
2236  const xmlChar *grpname);
2237 
2244 extern grp_template_t *
2245  obj_first_grouping (obj_template_t *obj);
2246 
2247 
2263 extern status_t
2264  obj_set_named_type (void *pcb, // yang_pcb_t
2265  tk_chain_t *tkc,
2266  ncx_module_t *mod,
2267  const xmlChar *typname,
2268  typ_def_t *typdef,
2269  obj_template_t *parent,
2270  grp_template_t *grp);
2271 
2272 
2295 extern obj_template_t *
2297  obj_template_t *srcobj,
2298  dlq_hdr_t *mobjQ);
2299 
2300 
2325 extern obj_template_t *
2327  obj_template_t *srcobj,
2328  dlq_hdr_t *mobjQ);
2329 
2330 
2331 /******************** obj_unique_t ********************/
2332 
2333 
2339 extern obj_unique_t *
2340  obj_new_unique (void);
2341 
2342 
2348 extern void
2349  obj_init_unique (obj_unique_t *un);
2350 
2351 
2357 extern void
2358  obj_free_unique (obj_unique_t *un);
2359 
2360 
2366 extern void
2367  obj_clean_unique (obj_unique_t *un);
2368 
2369 
2375 extern obj_unique_comp_t *
2376  obj_new_unique_comp (void);
2377 
2378 
2384 extern void
2385  obj_free_unique_comp (obj_unique_comp_t *unc);
2386 
2387 
2396 extern obj_unique_t *
2397  obj_find_unique (dlq_hdr_t *que,
2398  const xmlChar *xpath);
2399 
2400 
2407 extern obj_unique_t *
2408  obj_first_unique (obj_template_t *listobj);
2409 
2410 
2417 extern obj_unique_t *
2418  obj_next_unique (obj_unique_t *un);
2419 
2420 
2427 extern obj_unique_comp_t *
2428  obj_first_unique_comp (obj_unique_t *un);
2429 
2430 
2437 extern obj_unique_comp_t *
2438  obj_next_unique_comp (obj_unique_comp_t *uncomp);
2439 
2440 
2446 extern obj_key_t *
2447  obj_new_key (void);
2448 
2449 
2455 extern void
2456  obj_free_key (obj_key_t *key);
2457 
2458 
2466 extern obj_key_t *
2467  obj_find_key (dlq_hdr_t *que,
2468  const xmlChar *keycompname);
2469 
2470 
2479 extern obj_key_t *
2480  obj_find_key2 (dlq_hdr_t *que,
2481  obj_template_t *keyobj);
2482 
2483 
2490 extern obj_key_t *
2491  obj_first_key (obj_template_t *obj);
2492 
2493 
2500 extern obj_key_t *
2501  obj_last_key (obj_template_t *obj);
2502 
2503 
2510 extern const obj_key_t *
2511  obj_first_ckey (const obj_template_t *obj);
2512 
2513 
2520 extern obj_key_t *
2521  obj_next_key (obj_key_t *objkey);
2522 
2523 
2530 extern obj_key_t *
2531  obj_prev_key (obj_key_t *objkey);
2532 
2533 
2540 extern const obj_key_t *
2541  obj_next_ckey (const obj_key_t *objkey);
2542 
2543 
2550 extern uint32
2551  obj_key_count (const obj_template_t *obj);
2552 
2553 
2561 extern uint32
2562  obj_key_count_to_root (obj_template_t *obj);
2563 
2564 
2579 extern void
2580  obj_traverse_keys (obj_template_t *obj,
2581  void *cookie1,
2582  void *cookie2,
2583  obj_walker_fn_t walkerfn);
2584 
2585 
2592 extern boolean
2593  obj_any_rpcs (const dlq_hdr_t *datadefQ);
2594 
2595 
2602 extern boolean
2603  obj_any_notifs (const dlq_hdr_t *datadefQ);
2604 
2605 
2611 extern obj_deviate_t *
2612  obj_new_deviate (void);
2613 
2614 
2620 extern void
2621  obj_free_deviate (obj_deviate_t *deviate);
2622 
2623 
2630 extern const xmlChar *
2631  obj_get_deviate_arg (obj_deviate_arg_t devarg);
2632 
2633 
2639 extern obj_deviation_t *
2640  obj_new_deviation (void);
2641 
2642 
2648 extern void
2649  obj_free_deviation (obj_deviation_t *deviation);
2650 
2651 
2657 extern void
2658  obj_clean_deviationQ (dlq_hdr_t *deviationQ);
2659 
2660 
2669 extern status_t
2670  obj_gen_object_id (const obj_template_t *obj,
2671  xmlChar **buff);
2672 
2673 
2683 extern status_t
2684  obj_gen_object_id_prefix (const obj_template_t *obj, xmlChar **buff);
2685 
2686 
2697 extern status_t
2699  const obj_template_t *obj,
2700  xmlChar **buff);
2701 
2702 
2715 extern status_t
2716  obj_gen_object_id_xpath (const obj_template_t *obj,
2717  xmlChar **buff);
2718 
2719 
2728 extern status_t obj_gen_object_id_error (const obj_template_t *obj,
2729  xmlChar **buff);
2730 
2731 
2741 extern status_t obj_gen_object_id_unique (const obj_template_t *obj,
2742  const obj_template_t *stopobj,
2743  xmlChar **buff);
2744 
2745 
2757 extern status_t
2759  const obj_template_t *obj,
2760  xmlChar **buff);
2761 
2762 
2776 extern status_t
2777  obj_copy_object_id (const obj_template_t *obj,
2778  xmlChar *buff,
2779  uint32 bufflen,
2780  uint32 *reallen);
2781 
2782 
2796 extern status_t
2797  obj_copy_object_id_mod (const obj_template_t *obj,
2798  xmlChar *buff,
2799  uint32 bufflen,
2800  uint32 *reallen);
2801 
2802 
2813 extern status_t
2814  obj_gen_aughook_id (const obj_template_t *obj,
2815  xmlChar **buff);
2816 
2817 
2824 extern const xmlChar *
2825  obj_get_name (const obj_template_t *obj);
2826 
2827 
2835 extern status_t
2836  obj_set_name (obj_template_t *obj,
2837  const xmlChar *objname);
2838 
2839 
2852 extern boolean
2853  obj_has_name (const obj_template_t *obj);
2854 
2855 
2864 extern boolean
2865  obj_has_text_content (const obj_template_t *obj);
2866 
2867 
2874 extern ncx_status_t
2875  obj_get_status (const obj_template_t *obj);
2876 
2877 
2884 extern const xmlChar *
2885  obj_get_description (const obj_template_t *obj);
2886 
2887 
2897 extern const xmlChar *
2898  obj_get_alt_description (const obj_template_t *obj);
2899 
2900 
2908 extern const xmlChar *
2909  obj_get_help_description (const obj_template_t *obj);
2910 
2911 
2919 extern const xmlChar *
2920  obj_get_info_description (const obj_template_t *obj);
2921 
2922 
2929 extern const void *
2930  obj_get_description_addr (const obj_template_t *obj);
2931 
2932 
2939 extern const xmlChar *
2940  obj_get_reference (const obj_template_t *obj);
2941 
2942 
2950 extern const void *
2951  obj_get_reference_addr (const obj_template_t *obj);
2952 
2953 
2954 #define obj_is_config obj_get_config_flag_deep
2955 
2956 
2966 extern boolean
2967  obj_get_config_flag (const obj_template_t *obj);
2968 
2969 
2983 extern boolean
2984  obj_get_config_flag2 (const obj_template_t *obj,
2985  boolean *setflag);
2986 
2987 
2995 extern ncx_access_t
2996  obj_get_max_access (const obj_template_t *obj);
2997 
2998 
3005 extern dlq_hdr_t *
3006  obj_get_appinfoQ (obj_template_t *obj);
3007 
3008 
3015 extern dlq_hdr_t *
3016  obj_get_mustQ (const obj_template_t *obj);
3017 
3018 
3025 extern dlq_hdr_t *
3026  obj_get_leafrefQ (const obj_template_t *obj);
3027 
3028 
3038 extern const xmlChar *
3039  obj_get_typestr (const obj_template_t *obj);
3040 
3041 
3048 extern dlq_hdr_t *
3049  obj_get_datadefQ (obj_template_t *obj);
3050 
3051 
3058 extern const dlq_hdr_t *
3059  obj_get_cdatadefQ (const obj_template_t *obj);
3060 
3061 
3072 extern const xmlChar *
3073  obj_get_default (const obj_template_t *obj);
3074 
3075 
3084 extern const xmlChar *
3085  obj_get_first_default (const obj_template_t *obj,
3086  ncx_backptr_t **thisdef);
3087 
3088 
3101 extern const xmlChar *
3102  obj_get_next_default (const obj_template_t *obj,
3103  ncx_backptr_t *lastdef,
3104  ncx_backptr_t **thisdef);
3105 
3106 
3113 extern obj_template_t *
3114  obj_get_default_case (obj_template_t *obj);
3115 
3116 
3126 extern boolean
3127  obj_npcon_has_defaults (obj_template_t *obj);
3128 
3129 
3139 extern boolean
3140  obj_npcon_has_defaults_slow (obj_template_t *obj);
3141 
3142 
3151 extern uint32
3152  obj_get_level (const obj_template_t *obj);
3153 
3154 
3164 extern uint32
3165  obj_get_real_level (const obj_template_t *obj);
3166 
3167 
3177 extern boolean
3178  obj_has_typedefs (const obj_template_t *obj);
3179 
3180 
3188 extern typ_def_t *
3189  obj_get_typdef (obj_template_t *obj);
3190 
3191 
3199 extern typ_def_t *
3200  obj_get_base_typdef (obj_template_t *obj);
3201 
3202 
3210 extern const typ_def_t *
3211  obj_get_ctypdef (const obj_template_t *obj);
3212 
3213 
3220 extern ncx_btype_t
3221  obj_get_basetype (const obj_template_t *obj);
3222 
3223 
3230 extern const xmlChar *
3231  obj_get_mod_prefix (const obj_template_t *obj);
3232 
3233 
3240 extern const xmlChar *
3241  obj_get_mod_xmlprefix (const obj_template_t *obj);
3242 
3243 
3250 extern const xmlChar *
3251  obj_get_mod_name (const obj_template_t *obj);
3252 
3253 
3260 extern ncx_module_t *
3261  obj_get_mod (obj_template_t *obj);
3262 
3263 
3270 extern boolean
3271  obj_in_submodule (obj_template_t *obj);
3272 
3273 
3281 extern ncx_module_t *
3282  obj_get_mod_for_dump (obj_template_t *obj);
3283 
3284 
3291 extern const xmlChar *
3292  obj_get_mod_version (const obj_template_t *obj);
3293 
3294 
3301 extern const xmlChar *
3302  obj_get_type_name (const obj_template_t *obj);
3303 
3304 
3311 extern xmlns_id_t
3312  obj_get_nsid (const obj_template_t *obj);
3313 
3314 
3321 extern ncx_iqual_t
3322  obj_get_iqualval (obj_template_t *obj);
3323 
3324 
3332 extern ncx_iqual_t
3333  obj_get_iqualval_ex (obj_template_t *obj,
3334  boolean required);
3335 
3336 
3345 extern boolean
3346  obj_get_min_elements (obj_template_t *obj,
3347  uint32 *minelems);
3348 
3349 
3358 extern boolean
3359  obj_get_max_elements (obj_template_t *obj,
3360  uint32 *maxelems);
3361 
3362 
3369 extern const xmlChar *
3370  obj_get_units (obj_template_t *obj);
3371 
3372 
3379 extern obj_template_t *
3380  obj_get_parent (obj_template_t *obj);
3381 
3382 
3390 extern const obj_template_t *
3391  obj_get_cparent (const obj_template_t *obj);
3392 
3393 
3401 extern obj_template_t *
3402  obj_get_real_parent (obj_template_t *obj);
3403 
3404 
3414 extern const obj_template_t *
3415  obj_get_real_cparent (const obj_template_t *obj);
3416 
3417 
3424 extern const xmlChar *
3425  obj_get_presence_string (const obj_template_t *obj);
3426 
3427 
3435 extern void *
3436  obj_get_presence_string_field (const obj_template_t *obj);
3437 
3438 
3465 extern status_t
3466  obj_get_child_node (obj_template_t *obj,
3467  obj_template_t *chobj,
3468  const xml_node_t *curnode,
3469  boolean xmlorder,
3470  dlq_hdr_t *force_modQ,
3471  obj_template_t **rettop,
3472  obj_template_t **retobj);
3473 
3474 
3481 extern uint32
3482  obj_get_child_count (const obj_template_t *obj);
3483 
3484 
3492 extern obj_template_t *
3493  obj_get_default_parm (obj_template_t *obj);
3494 
3495 
3510 extern boolean
3511  obj_get_config_flag_deep (const obj_template_t *obj);
3512 
3513 
3528 extern boolean
3529  obj_get_config_flag_check (const obj_template_t *obj,
3530  boolean *ingrp);
3531 
3532 
3540 extern uint8
3541  obj_get_fraction_digits (const obj_template_t *obj);
3542 
3543 
3551 extern const ncx_iffeature_t *
3552  obj_get_first_iffeature (const obj_template_t *obj);
3553 
3554 
3562 extern const ncx_iffeature_t *
3563  obj_get_next_iffeature (const ncx_iffeature_t *iffeature);
3564 
3565 
3572 extern boolean
3573  obj_is_anyxml (const obj_template_t *obj);
3574 
3575 
3582 extern boolean
3583  obj_is_anydata (const obj_template_t *obj);
3584 
3585 
3593 extern boolean
3594  obj_is_any (const obj_template_t *obj);
3595 
3596 
3603 extern boolean
3604  obj_is_leaf (const obj_template_t *obj);
3605 
3606 
3613 extern boolean
3614  obj_is_leaf_list (const obj_template_t *obj);
3615 
3616 
3623 extern boolean
3624  obj_is_list (const obj_template_t *obj);
3625 
3626 
3633 extern boolean obj_in_list (const obj_template_t *obj);
3634 
3635 
3642 extern boolean
3643  obj_is_container (const obj_template_t *obj);
3644 
3645 
3652 extern boolean
3653  obj_is_choice (const obj_template_t *obj);
3654 
3655 
3662 extern boolean
3663  obj_is_case (const obj_template_t *obj);
3664 
3665 
3672 extern boolean
3673  obj_is_uses (const obj_template_t *obj);
3674 
3675 
3682 extern boolean
3683  obj_is_leafy (const obj_template_t *obj);
3684 
3685 
3692 extern boolean obj_is_terminal (const obj_template_t *obj);
3693 
3694 
3702 extern boolean
3703  obj_is_mandatory (obj_template_t *obj);
3704 
3705 
3716 extern boolean
3717  obj_is_mandatory_when_ex (obj_template_t *obj,
3718  boolean config_only);
3719 
3720 
3729 extern boolean
3730  obj_is_mandatory_when (obj_template_t *obj);
3731 
3732 
3741 extern boolean
3742  obj_is_cloned (const obj_template_t *obj);
3743 
3744 
3753 extern boolean
3754  obj_is_augclone (const obj_template_t *obj);
3755 
3756 
3764 extern boolean
3765  obj_is_augment (const obj_template_t *obj);
3766 
3767 
3775 extern boolean obj_in_augment (const obj_template_t *obj);
3776 
3777 
3785 extern boolean
3786  obj_is_refine (const obj_template_t *obj);
3787 
3788 
3797 extern boolean
3798  obj_is_data (const obj_template_t *obj);
3799 
3800 
3810 extern boolean
3811  obj_is_data_db (const obj_template_t *obj);
3812 
3813 
3821 extern boolean
3822  obj_is_data_node (const obj_template_t *obj);
3823 
3824 
3832 extern boolean
3833  obj_in_rpc (const obj_template_t *obj);
3834 
3835 
3842 extern boolean
3843  obj_in_rpc_reply (const obj_template_t *obj);
3844 
3845 
3852 extern boolean
3853  obj_in_notif (const obj_template_t *obj);
3854 
3855 
3862 extern boolean
3863  obj_is_rpc (const obj_template_t *obj);
3864 
3865 
3872 extern boolean obj_is_rpcio (const obj_template_t *obj);
3873 
3874 
3881 extern boolean obj_is_rpcio_input (const obj_template_t *obj);
3882 
3883 
3890 extern boolean
3891  obj_is_action (const obj_template_t *obj);
3892 
3893 
3900 extern boolean obj_in_action (const obj_template_t *obj);
3901 
3902 
3909 extern boolean
3910  obj_is_notif (const obj_template_t *obj);
3911 
3912 
3925 extern boolean
3926  obj_is_empty (const obj_template_t *obj);
3927 
3928 
3936 extern boolean
3937  obj_is_match (const obj_template_t *obj1,
3938  const obj_template_t *obj2);
3939 
3940 
3947 extern boolean
3948  obj_is_hidden (const obj_template_t *obj);
3949 
3950 
3957 extern boolean
3958  obj_is_root (const obj_template_t *obj);
3959 
3960 
3966 extern void
3967  obj_force_root (obj_template_t *obj);
3968 
3969 
3976 extern boolean
3977  obj_is_rpc_root (const obj_template_t *obj);
3978 
3979 
3986 extern boolean
3987  obj_is_password (const obj_template_t *obj);
3988 
3989 
3996 extern boolean
3997  obj_is_xsdlist (const obj_template_t *obj);
3998 
3999 
4006 extern boolean
4007  obj_is_cli (const obj_template_t *obj);
4008 
4009 
4018 extern boolean obj_is_dirty (const obj_template_t *obj,
4019  ncx_cfg_t cfgid);
4020 
4021 
4028 extern boolean
4029  obj_is_key (const obj_template_t *obj);
4030 
4031 
4038 extern boolean
4039  obj_is_abstract (const obj_template_t *obj);
4040 
4041 
4049 extern boolean obj_in_abstract (const obj_template_t *obj);
4050 
4051 
4058 extern boolean
4059  obj_is_deleted (const obj_template_t *obj);
4060 
4061 
4070 extern boolean
4071  obj_is_deleted_ex (const obj_template_t *obj);
4072 
4073 
4080 extern boolean
4081  obj_is_xpath_string (const obj_template_t *obj);
4082 
4083 
4091 extern boolean
4092  obj_is_schema_instance_string (const obj_template_t *obj);
4093 
4094 
4101 extern boolean
4102  obj_is_secure (const obj_template_t *obj);
4103 
4104 
4112 extern boolean
4113  obj_is_very_secure (const obj_template_t *obj);
4114 
4115 
4123 extern boolean
4124  obj_is_system_ordered (const obj_template_t *obj);
4125 
4126 
4134 extern boolean
4135  obj_is_np_container (const obj_template_t *obj);
4136 
4137 
4145 extern boolean
4146  obj_is_p_container (const obj_template_t *obj);
4147 
4148 
4157 extern boolean
4158  obj_is_enabled (obj_template_t *obj);
4159 
4160 
4167 extern boolean
4168  obj_has_iffeature (obj_template_t *obj);
4169 
4170 
4180 extern boolean
4181  obj_is_single_instance (obj_template_t *obj);
4182 
4183 
4191 extern boolean
4192  obj_is_short_case (obj_template_t *obj);
4193 
4194 
4203 extern boolean
4204  obj_is_top (const obj_template_t *obj);
4205 
4206 
4213 extern boolean
4214  obj_is_datapath (const obj_template_t *obj);
4215 
4216 
4228 extern boolean
4229  obj_ok_for_cli (obj_template_t *obj);
4230 
4231 
4239 extern boolean
4240  obj_has_children (obj_template_t *obj);
4241 
4242 
4251 extern boolean
4252  obj_has_ro_children (obj_template_t *obj);
4253 
4254 
4262 extern boolean obj_has_ro_descendants (obj_template_t *obj);
4263 
4264 
4272 extern boolean obj_has_rw_children (obj_template_t *obj);
4273 
4274 
4284 extern boolean obj_has_rw_children_ex (obj_template_t *obj,
4285  boolean term_only);
4286 
4287 
4294 extern boolean
4295  obj_rpc_has_input (obj_template_t *obj);
4296 
4297 
4304 extern boolean
4305  obj_rpc_has_output (obj_template_t *obj);
4306 
4307 
4316 extern boolean
4317  obj_has_when_stmts (obj_template_t *obj);
4318 
4319 
4325 extern obj_metadata_t *
4326  obj_new_metadata (void);
4327 
4328 
4338 extern void
4339  obj_free_metadata (obj_metadata_t *meta);
4340 
4341 
4349 extern status_t
4350  obj_add_metadata (obj_metadata_t *meta,
4351  obj_template_t *obj);
4352 
4353 
4361 extern obj_metadata_t *
4362  obj_find_metadata (const obj_template_t *obj,
4363  const xmlChar *name);
4364 
4365 
4372 extern obj_metadata_t *
4373  obj_first_metadata (const obj_template_t *obj);
4374 
4375 
4382 extern obj_metadata_t *
4383  obj_next_metadata (const obj_metadata_t *meta);
4384 
4385 
4396 extern void
4397  obj_sort_children (obj_template_t *obj);
4398 
4399 
4406 extern void
4407  obj_set_ncx_flags (obj_template_t *obj);
4408 
4409 
4417 extern uint32
4418  obj_enabled_child_count (obj_template_t *obj);
4419 
4420 
4430 extern void
4432  dlq_hdr_t *datadefQ,
4433  uint32 startindent,
4434  uint32 indent);
4435 
4436 
4443 extern const xmlChar *
4444  obj_get_keystr (obj_template_t *obj);
4445 
4446 
4452 extern void
4453  obj_delete_obsolete (dlq_hdr_t *objQ);
4454 
4455 
4462 extern const xmlChar *
4463  obj_get_altname (const obj_template_t *obj);
4464 
4465 
4473 extern obj_template_t *
4474  obj_get_leafref_targobj (obj_template_t *obj);
4475 
4476 
4484 extern obj_template_t *
4485  obj_get_augment_targobj (obj_template_t *obj);
4486 
4487 
4495 extern const xmlChar *
4496  obj_get_augment_target (obj_template_t *obj);
4497 
4498 
4505 extern boolean
4506  obj_is_external_augment (obj_template_t *obj);
4507 
4508 
4515 extern boolean
4516  obj_is_external_data_augment (obj_template_t *obj);
4517 
4518 
4526 extern boolean
4527  obj_is_cli_equals_ok (const obj_template_t *obj);
4528 
4529 
4537 extern boolean
4538  obj_is_cli_text_block (const obj_template_t *obj);
4539 
4540 
4548 extern boolean
4549  obj_is_sil_delete_children_first (const obj_template_t *obj);
4550 
4551 
4560 extern boolean
4561  obj_is_no_sil_delete_children_first (const obj_template_t *obj);
4562 
4563 
4570 extern void
4571  obj_add_child (obj_template_t *child, obj_template_t *parent);
4572 
4573 
4582 extern boolean
4583  obj_is_block_user_create (const obj_template_t *obj);
4584 
4585 
4594 extern boolean
4595  obj_is_block_user_update (const obj_template_t *obj);
4596 
4597 
4606 extern boolean
4607  obj_is_block_user_delete (const obj_template_t *obj);
4608 
4609 
4616 extern obj_iffeature_ptr_t *
4618 
4619 
4625 extern void obj_free_iffeature_ptr (obj_iffeature_ptr_t *iffptr);
4626 
4627 
4634 extern obj_iffeature_ptr_t *
4635  obj_first_iffeature_ptr (obj_template_t *obj);
4636 
4637 
4644 extern obj_iffeature_ptr_t *
4645  obj_next_iffeature_ptr (obj_iffeature_ptr_t *iffptr);
4646 
4647 
4654 extern ncx_backptr_t *
4655  obj_first_inherit_when_ptr (obj_template_t *obj);
4656 
4657 
4664 extern ncx_backptr_t *
4666 
4667 
4675 extern boolean
4676  obj_find_xpath_backptr (obj_template_t *obj,
4677  struct xpath_pcb_t_ *xpath);
4678 
4679 
4687 extern struct xpath_pcb_t_ *
4688  obj_next_xpath_backptr (obj_template_t *obj,
4689  struct xpath_pcb_t_ *xpath);
4690 
4691 
4698 extern struct xpath_pcb_t_ *
4699  obj_first_xpath_backptr (obj_template_t *obj);
4700 
4701 
4702 
4713 extern status_t
4714  obj_assign_xpath_backptr (obj_template_t *obj,
4715  struct xpath_pcb_t_ *xpath);
4716 
4717 
4727 extern void
4728  obj_clear_xpath_backptr (obj_template_t *obj,
4729  struct xpath_pcb_t_ *xpath);
4730 
4731 
4740 extern status_t
4741  obj_set_xpath_backptrs (obj_template_t *obj);
4742 
4743 
4752 extern void
4753  obj_flag_xpath_backptrs_dirty (obj_template_t *obj,
4754  ncx_cfg_t cfg_id,
4755  boolean flag);
4756 
4757 
4773 extern boolean
4774  obj_is_target_template (obj_template_t *obj);
4775 
4776 
4797 extern boolean
4798  obj_maybe_target_template (obj_template_t *obj);
4799 
4800 
4808 extern boolean
4809  obj_is_supported (obj_template_t *obj);
4810 
4811 
4824 extern void
4825  obj_delete_mod_children (obj_template_t *obj,
4826  ncx_module_t *mod);
4827 
4828 
4835 extern void
4836  obj_set_dup_local (obj_template_t *obj);
4837 
4838 
4847 extern boolean
4848  obj_is_dup_local (obj_template_t *obj);
4849 
4850 
4857 extern void
4858  obj_set_key_leaf (obj_template_t *obj,
4859  uint16 keynum);
4860 
4861 
4868 extern uint16
4869  obj_get_key_num (obj_template_t *obj);
4870 
4871 
4879 extern boolean
4880  obj_is_exclusive_rpc (const obj_template_t *obj);
4881 
4882 
4889 extern boolean
4890  obj_is_sil_force_replay (const obj_template_t *obj);
4891 
4892 
4899 extern boolean
4900  obj_is_sil_force_replace_replay (const obj_template_t *obj);
4901 
4902 
4909 extern void
4910  obj_set_sil_force_replace_replay (obj_template_t *obj);
4911 
4912 
4919 extern boolean obj_notif_enabled (const obj_template_t *obj);
4920 
4921 
4928 extern boolean obj_notif_log_drops (const obj_template_t *obj);
4929 
4930 
4937 extern void obj_set_notif_enabled (obj_template_t *obj,
4938  boolean enabled);
4939 
4940 
4947 extern void obj_set_notif_log_drops (const obj_template_t *obj,
4948  boolean enabled);
4949 
4950 
4958 extern boolean
4959  obj_unload_active (const obj_template_t *obj);
4960 
4961 
4968 extern boolean
4969  obj_is_obsolete (const obj_template_t *obj);
4970 
4971 
4979 extern boolean
4980  obj_parent_same_module (const obj_template_t *obj);
4981 
4982 
4989 extern void
4990  obj_set_sil_priority (obj_template_t *obj,
4991  uint8 prio);
4992 
4993 
5000 extern uint8
5001  obj_get_sil_priority (obj_template_t *obj);
5002 
5003 
5011 extern boolean
5012  obj_in_edit2_mode (obj_template_t *obj);
5013 
5014 
5021 extern ncx_leafref_class_t
5022  obj_get_leafref_class (obj_template_t *obj);
5023 
5024 
5032 extern boolean
5033  obj_delete_all_supported (obj_template_t *obj);
5034 
5035 
5042 extern boolean
5043  obj_is_crypt_hash (const obj_template_t *obj);
5044 
5045 
5056 extern void
5057  obj_number_data_object (obj_template_t *obj);
5058 
5059 
5065 extern obj_defval_tk_t *
5066  obj_new_defval_tk (void);
5067 
5068 
5074 extern void
5075  obj_free_defval_tk (obj_defval_tk_t *def);
5076 
5077 
5084 extern dlq_hdr_t *
5085  obj_get_defvalQ (obj_template_t *obj);
5086 
5087 
5094 extern obj_defval_tk_t *
5095  obj_first_defval_tk (const obj_refine_t *ref);
5096 
5097 
5104 extern obj_defval_tk_t *
5105  obj_next_defval_tk (const obj_defval_tk_t *defval_tk);
5106 
5107 #define obj_next_dev_defval_tk(D) obj_next_defval_tk(D)
5108 
5109 
5116 extern obj_defval_tk_t *
5117  obj_first_dev_defval_tk (const obj_deviate_t *dev);
5118 
5119 
5126 extern boolean
5127  obj_get_leaf_list_defset (const obj_template_t *obj);
5128 
5129 
5136 extern void
5137  obj_find_delete_defval (obj_template_t *obj,
5138  const xmlChar *defval);
5139 
5140 
5148 extern boolean
5149  obj_find_defval (obj_template_t *obj,
5150  const xmlChar *find_defval);
5151 
5152 
5159 extern void
5160  obj_delete_all_defvals (obj_template_t *obj);
5161 
5162 
5167 extern void
5168  obj_enter_xpath_mode (void);
5169 
5170 
5175 extern void
5176  obj_exit_xpath_mode (void);
5177 
5178 
5186 extern obj_key_t *
5187  obj_get_key_by_name (obj_template_t *obj,
5188  const xmlChar *keyname);
5189 
5190 
5197 extern ncx_yang_version_t
5198  obj_get_langver (obj_template_t *obj);
5199 
5200 
5210 extern boolean
5211  obj_is_abstract_ex (const obj_template_t *obj);
5212 
5213 
5219 extern void
5220  obj_set_abstract (obj_template_t *obj);
5221 
5222 
5231 extern boolean
5232  obj_is_final (obj_template_t *obj);
5233 
5234 
5240 extern void
5241  obj_force_disabled (obj_template_t *obj);
5242 
5243 
5244 
5245 #if defined(WITH_SNMP) && defined(WITH_RESTCONF)
5246 
5252 extern const xmlChar *
5253  obj_get_oid_string (obj_template_t *obj);
5254 
5255 
5266 extern obj_oid_t *
5267  obj_get_oid_struct (obj_template_t *obj,
5268  boolean *malloced);
5269 
5270 #endif // WITH_SNMP and WITH_RESTCONF
5271 
5272 
5280 extern status_t obj_fill_keystackQ (obj_template_t *obj,
5281  dlq_hdr_t *keystackQ);
5282 
5283 
5289 extern void obj_dump_keystackQ (dlq_hdr_t *keystackQ);
5290 
5291 
5298 extern void obj_clr_enable_chk (obj_template_t *obj);
5299 
5300 
5308 extern status_t
5309  obj_cache_datarule (obj_template_t *obj,
5310  void *rule);
5311 
5312 
5319 extern void
5320  obj_clear_datarule (obj_template_t *obj,
5321  const void *rule);
5322 
5323 
5331 extern boolean
5332  obj_match_datarule (obj_template_t *obj,
5333  void *rule);
5334 
5335 
5345 extern status_t
5346  obj_add_errmsg (obj_template_t *obj,
5347  const xmlChar *basestr,
5348  obj_errmsg_t **ret_errmsg);
5349 
5350 
5358 extern status_t
5359  obj_add_errmsg_parm (obj_errmsg_t *errmsg,
5360  const xmlChar *parmstr);
5361 
5362 
5371 extern status_t
5372  obj_add_errmsg_filter (obj_errmsg_t *errmsg,
5373  const xmlChar *parmstr,
5374  boolean is_errortag);
5375 
5376 
5392 extern boolean
5393  obj_has_get2cb (obj_template_t *obj);
5394 
5395 
5403 extern boolean
5404  obj_is_singular (const obj_template_t *obj);
5405 
5406 
5416 extern boolean
5417  obj_get_top_config_flag (const obj_template_t *obj);
5418 
5419 
5426 extern boolean
5427  obj_ok_for_nolock (const obj_template_t *obj);
5428 
5429 
5436 extern boolean
5437  obj_use_get_when_check (const obj_template_t *obj);
5438 
5439 
5446 extern boolean
5447  obj_has_mandatory_children (obj_template_t *obj);
5448 
5449 
5456 extern boolean obj_get_xpath_oper_ok (const obj_template_t *obj);
5457 
5458 
5464 extern void obj_set_xpath_oper_ok (obj_template_t *obj);
5465 
5466 
5474 extern boolean
5475  obj_is_in_aio_get2 (obj_template_t *obj);
5476 
5477 
5488 extern boolean
5489  obj_is_top_aio_get2 (obj_template_t *obj);
5490 
5491 
5498 extern obj_template_t *
5499  obj_get_top_aio_get2 (obj_template_t *child);
5500 
5501 
5508 extern boolean
5509  obj_has_aio_list (obj_template_t *obj);
5510 
5511 
5518 extern ncx_module_t *
5519  obj_get_real_mod (obj_template_t *obj);
5520 
5521 
5529 extern obj_template_t *
5530  obj_get_real_parent_aug (obj_template_t *obj);
5531 
5532 
5543 extern boolean
5544  obj_is_ancestor (const obj_template_t *ancestor,
5545  const obj_template_t *obj);
5546 
5547 
5553 extern void
5554  obj_ban_nolock_get (obj_template_t *obj);
5555 
5556 
5560 #ifdef __cplusplus
5561 } /* end extern 'C' */
5562 #endif
5563 
5564 #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:14083
xmlns_id_t nsid
namespace ID assigned to the object at run-time
Definition: obj.h:1202
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:1355
const obj_key_t * obj_next_ckey(const obj_key_t *objkey)
Get the next key record: Const version.
Definition: obj.c:9685
uint8 obj_get_sil_priority(obj_template_t *obj)
Get the SIL priority field.
Definition: obj.c:17305
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:17689
xmlChar * target
schema-node target to deviate
Definition: obj.h:1347
const xmlChar * obj_get_presence_string(const obj_template_t *obj)
Get the present-stmt value, if any.
Definition: obj.c:12883
boolean obj_in_rpc(const obj_template_t *obj)
Check if the object is in an rpc/input section.
Definition: obj.c:13950
boolean obj_ok_for_cli(obj_template_t *obj)
Figure out if the obj is OK for current CLI implementation.
Definition: obj.c:14850
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:13015
boolean obj_is_cli_text_block(const obj_template_t *obj)
Check if object is marked as ywx:cli-text-block.
Definition: obj.c:16086
uint32 obj_key_count(const obj_template_t *obj)
Get the number of keys for this object.
Definition: obj.c:9711
boolean obj_is_p_container(const obj_template_t *obj)
Check if the object is an Presence-container.
Definition: obj.c:14581
xmlChar * target
relative-path of the object to refine
Definition: obj.h:950
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:16814
boolean maxset
max-elements set
Definition: obj.h:849
uint16 depth
internal nest depth of augment
Definition: obj.h:1054
obj_deviation_t * obj_new_deviation(void)
Malloc and initialize the fields in a an object deviation statement.
Definition: obj.c:9987
uint32 maxelems
max-elements value
Definition: obj.h:883
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:6969
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:1379
One YANG metadata (XML attribute) node.
Definition: obj.h:1262
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:1390
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:16164
obj_metadata_t * obj_first_metadata(const obj_template_t *obj)
Get the first object metadata definition in the object.
Definition: obj.c:15233
ncx_iqual_t obj_get_iqualval_ex(obj_template_t *obj, boolean required)
Get the instance qualifier for this object.
Definition: obj.c:12531
void obj_free_key(obj_key_t *key)
Free a obj_key_t struct.
Definition: obj.c:9447
One YANG &#39;container&#39; definition.
Definition: obj.h:769
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:8737
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:17371
void obj_enter_xpath_mode(void)
Enter xpath mode and start ignoring obj_is_enabled.
Definition: obj.c:17710
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:10108
This object represents a YANG 1.1 action schema node.
Definition: obj.h:708
obj_testflags_t desc_testflags
see AGT_TEST_FL_* definitions
Definition: obj.h:1154
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:16965
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:17185
This object represents a YANG case schema node.
Definition: obj.h:642
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:13378
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:7005
xmlChar * units
units if deviating the units
Definition: obj.h:1311
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:7081
void obj_set_notif_enabled(obj_template_t *obj, boolean enabled)
Set the notification object enabled flag.
Definition: obj.c:17138
This object represents a YANG list data node.
Definition: obj.h:631
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:18385
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:1352
obj_deviate_arg_t arg
deviate argument enum
Definition: obj.h:1299
obj_defval_tk_t * obj_first_defval_tk(const obj_refine_t *ref)
Get the first defval_tk entry.
Definition: obj.c:17550
boolean obj_get_min_elements(obj_template_t *obj, uint32 *minelems)
Get the min-elements clause for this object, if any.
Definition: obj.c:12619
void obj_ban_nolock_get(obj_template_t *obj)
Ban nolock-get for the object.
Definition: obj.c:18751
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:10217
YANG deviate statement struct.
Definition: obj.h:1284
const xmlChar * obj_get_alt_description(const obj_template_t *obj)
obj_get_alt_description (DEPRECATED)
Definition: obj.c:10947
obj_augtype_t
enumeration for different YANG augment statement types
Definition: obj.h:723
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:16099
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:13730
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:16050
void obj_set_xpath_oper_ok(obj_template_t *obj)
Set the object XPath oper OK flag.
Definition: obj.c:18638
boolean supported
mod loaded, not implemented
Definition: obj.h:1032
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:6761
boolean obj_any_rpcs(const dlq_hdr_t *datadefQ)
Check if there are any RPC methods in the datadefQ.
Definition: obj.c:9834
status_t obj_set_name(obj_template_t *obj, const xmlChar *objname)
Set the name field for this obj.
Definition: obj.c:10648
One YANG &#39;case&#39; definition.
Definition: obj.h:912
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:6275
uint32 obj_get_child_count(const obj_template_t *obj)
Get the number of child nodes the object has.
Definition: obj.c:12988
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:12371
obj_template_t * obj_get_top_aio_get2(obj_template_t *child)
Find the top AIO object.
Definition: obj.c:18526
boolean obj_is_empty(const obj_template_t *obj)
Check if object was entered in empty fashion:
Definition: obj.c:14173
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:9510
xmlChar * target
Xpath schema-node target to augment.
Definition: obj.h:1039
ncx_iffeature_t * iffeature
if-feature back-ptr
Definition: obj.h:1082
boolean obj_is_leafy(const obj_template_t *obj)
Check if object is a proper leaf or leaflist.
Definition: obj.c:13552
ncx_error_t def_tkerr
file and line info for compiler
Definition: obj.h:744
boolean obj_is_list(const obj_template_t *obj)
Check if object is a YANG list.
Definition: obj.c:13423
back-pointer to inherited if-feature statements
Definition: obj.h:1080
boolean obj_is_very_secure(const obj_template_t *obj)
Check if object is tagged ncx:very-secure.
Definition: obj.c:14525
xmlChar * name
name of leaf or anyxml/anydata
Definition: obj.h:794
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:5820
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:1067
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:7043
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:836
obj_metadata_t * obj_new_metadata(void)
Malloc and initialize the fields in a an obj_metadata_t.
Definition: obj.c:15095
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:9374
obj_unique_comp_t * obj_new_unique_comp(void)
Alloc and Init a obj_unique_comp_t struct.
Definition: obj.c:9229
void obj_delete_obsolete(dlq_hdr_t *objQ)
Delete any obsolete child nodes within the specified object subtree.
Definition: obj.c:15900
uint32 flags
see OBJ_FL_* definitions
Definition: obj.h:1146
xmlns_id_t nsid
internal fields for manager and agent
Definition: obj.h:1031
struct obj_template_t_ * unobj
unique object target
Definition: obj.h:751
One YANG augment statement struct (top-level or in case-stmt.
Definition: obj.h:1037
uint32 minelems
min-elements value
Definition: obj.h:985
typ_template_t * obj_first_typedef(obj_template_t *obj)
Get the first local typedef for this object, if any.
Definition: obj.c:8349
This object represents a YANG uses schema node.
Definition: obj.h:653
xmlChar * units
units-stmt
Definition: obj.h:833
uint32 len
state : length
Definition: obj.h:1100
boolean obj_ok_for_nolock(const obj_template_t *obj)
check an object OK for nolock
Definition: obj.c:18305
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:13743
ncx_error_t maxelems_tkerr
also maxset
Definition: obj.h:988
ncx_yang_version_t
enumeration for different YANG language versions
Definition: ncxtypes.h:945
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:7117
boolean obj_is_datapath(const obj_template_t *obj)
Check if object is marked as a ywx:datapath object.
Definition: obj.c:14835
boolean obj_is_deleted(const obj_template_t *obj)
Check if object has been deleted by a deviate not-supported.
Definition: obj.c:14413
YANG if-feature entry.
Definition: ncxtypes.h:888
boolean defset
T if any defaults specified for this leaf-list.
Definition: obj.h:845
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:10448
One YANG &#39;leaf-list&#39; definition.
Definition: obj.h:828
uint16 keynum
internal key number only for keay leafs
Definition: obj.h:815
ncx_name_match_t
Node name match modes.
Definition: ncxtypes.h:673
One YANG data-def-stmt.
Definition: obj.h:1140
struct obj_template_t_ * usesobj
backptr to uses-obj if grouping expand
Definition: obj.h:1164
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:14317
ncx_status_t status
status-stmt
Definition: obj.h:926
boolean isconfig
T:constraint is on config.
Definition: obj.h:763
void obj_dump_keystackQ(dlq_hdr_t *keystackQ)
Dump a keystackQ with backptrs to obj_template_t for key leafs.
Definition: obj.c:18052
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:806
const xmlChar * obj_get_units(obj_template_t *obj)
Get the units clause for this object, if any.
Definition: obj.c:12705
boolean obj_rpc_has_input(obj_template_t *obj)
Check if the RPC object has any real input children.
Definition: obj.c:15030
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:17074
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:14352
void obj_set_ncx_flags(obj_template_t *obj)
Check the NCX appinfo extensions and set flags as needed.
Definition: obj.c:15369
xmlChar * name
notification name
Definition: obj.h:1061
uint8 obj_get_fraction_digits(const obj_template_t *obj)
Get the fraction-digits field from the object typdef.
Definition: obj.c:13261
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:9058
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:964
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:13829
struct obj_template_t_ * leafrefobj
leafref obj backptr only if btyp == NCX_BT_LEAFREF
Definition: obj.h:823
boolean obj_is_cli(const obj_template_t *obj)
Check if object is marked as a CLI object.
Definition: obj.c:14296
grp_template_t * grp
non-NULL == in a grp.datadefQ
Definition: obj.h:1156
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:701
This object represents a YANG augment statement.
Definition: obj.h:672
One YANG list key component.
Definition: obj.h:733
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:18569
boolean obj_is_container(const obj_template_t *obj)
Check if object is a YANG container.
Definition: obj.c:13479
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:11687
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:9780
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:17092
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:11736
boolean obj_has_typedefs(const obj_template_t *obj)
Check if the object has any nested typedefs in it.
Definition: obj.c:11982
boolean obj_is_obsolete(const obj_template_t *obj)
Check if the object has obsolete status.
Definition: obj.c:17205
xmlChar * valstr
state: value string
Definition: obj.h:1103
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:1159
const ncx_iffeature_t * obj_get_next_iffeature(const ncx_iffeature_t *iffeature)
Get the next if-feature clause (if any)
Definition: obj.c:13324
boolean minset
min-elements set
Definition: obj.h:880
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:7774
This object represents a YANG choice schema node.
Definition: obj.h:637
boolean seen
needed by yangdiff
Definition: obj.h:762
This object represents a YANG refine statement.
Definition: obj.h:661
const xmlChar * obj_get_typestr(const obj_template_t *obj)
Get the name of the object type.
Definition: obj.c:11466
ncx_transaction_id_t when_txid
current edit transaction ID for WHEN test default nodes pruning
Definition: obj.h:1232
Contains NCX constants.
boolean mandatory
deviating mandatory-stmt
Definition: obj.h:1326
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:16873
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:18717
representation of one module or submodule during and after parsing
Definition: ncxtypes.h:1052
grp_template_t * obj_first_grouping(obj_template_t *obj)
Get the first local grouping if any.
Definition: obj.c:8516
boolean expand_done
expand done flag
Definition: obj.h:943
This object represents a YANG 1.1 anydata data node.
Definition: obj.h:616
obj_key_t * obj_next_key(obj_key_t *objkey)
Get the next key record.
Definition: obj.c:9633
obj_type_t objtype
object type (def)
Definition: obj.h:1142
struct obj_template_t_ * augobj
backptr to augment-obj if augment expand
Definition: obj.h:1165
obj_testflags_t testflags
see AGT_TEST_FL_* definitions
Definition: obj.h:1153
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:10996
void obj_clean_unique(obj_unique_t *un)
Clean a obj_unique_t struct.
Definition: obj.c:9196
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:1004
ncx_error_t keytkerr
saved error info for key-stmt errors
Definition: obj.h:888
boolean obj_get_top_config_flag(const obj_template_t *obj)
Get the config flag for the top-level object.
Definition: obj.c:18276
boolean obj_is_rpc_root(const obj_template_t *obj)
Check if object is marked as an RPC root object.
Definition: obj.c:14256
unsigned long oid_t
data type used in SNMP
Definition: obj.h:1118
YANG deviation statement struct.
Definition: obj.h:1345
deviate add
Definition: obj.h:1276
void obj_set_key_leaf(obj_template_t *obj, uint16 keynum)
Set the key data for the object.
Definition: obj.c:16983
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:916
const xmlChar * obj_get_name(const obj_template_t *obj)
Get the name field for this obj.
Definition: obj.c:10585
ncx_error_t units_tkerr
same comment as tkerr
Definition: obj.h:1314
struct obj_template_t_ * targobj
resolved backptr to augmented object
Definition: obj.h:1048
ncx_status_t status
status-stmt
Definition: obj.h:784
boolean obj_is_case(const obj_template_t *obj)
Check if object is a YANG case.
Definition: obj.c:13519
boolean isduplicate
T: will be ignored by server.
Definition: obj.h:753
ncx_error_t tkerr
file and line info for compiler
Definition: obj.h:1268
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:14950
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:6230
ncx_error_t minelems_tkerr
also minset
Definition: obj.h:1333
ncx_module_t * obj_get_mod(obj_template_t *obj)
Get the module pointer for this object.
Definition: obj.c:12292
boolean obj_is_schema_instance_string(const obj_template_t *obj)
Check if object is a schema-instance string.
Definition: obj.c:14494
uint32 minelems
min-elements value
Definition: obj.h:881
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:6190
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:1045
custom error message filter control block
Definition: obj.h:1087
ncx_status_t status
status-stmt
Definition: obj.h:812
boolean obj_is_terminal(const obj_template_t *obj)
Check if object is a proper leaf or leaflist or anyxml.
Definition: obj.c:13567
ncx_status_t status
status-stmt
Definition: obj.h:1052
ncx_status_t status
status-stmt
Definition: obj.h:942
void obj_add_child(obj_template_t *child, obj_template_t *parent)
Add a child object to the specified complex node.
Definition: obj.c:16136
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:10520
ncx_status_t status
status-stmt
Definition: obj.h:851
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:1214
const xmlChar * obj_get_augment_target(obj_template_t *obj)
Get the target path string for an augments object.
Definition: obj.c:16010
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:17626
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:5858
boolean obj_find_xpath_backptr(obj_template_t *obj, struct xpath_pcb_t_ *xpath)
Find an xpath-expr backptr.
Definition: obj.c:16335
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:16206
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:17036
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:956
void obj_free_unique_comp(obj_unique_comp_t *unc)
Free a obj_unique_comp_t struct.
Definition: obj.c:9252
boolean obj_match_datarule(obj_template_t *obj, void *rule)
Check if the data-rule back-ptr applies to this node.
Definition: obj.c:18153
void obj_clear_xpath_backptr(obj_template_t *obj, struct xpath_pcb_t_ *xpath)
Clear an xpath-expr backptr.
Definition: obj.c:16529
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:6115
One YANG 1.1 default stored in a Q for refine and deviate.
Definition: obj.h:741
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:9741
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:17986
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:13816
xmlChar * name
case name
Definition: obj.h:913
uint32 minelems
deviating min-elements
Definition: obj.h:1332
This object represents a YANG leaf data node.
Definition: obj.h:625
boolean obj_get_leaf_list_defset(const obj_template_t *obj)
Get the defset flag for a leaf-list.
Definition: obj.c:17607
boolean obj_get_config_flag_check(const obj_template_t *obj, boolean *ingrp)
get config flag during YANG module checking
Definition: obj.c:13175
xmlChar * devmodname
set if not the targmod
Definition: obj.h:1359
uint32 xflags2
see OBJ_FL_* definitions
Definition: obj.h:1148
object specific variants
Definition: obj.h:1238
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:1009
ncx_error_t config_tkerr
config and confset are in the object flags
Definition: obj.h:981
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:7956
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:16900
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:6633
boolean obj_is_anyxml(const obj_template_t *obj)
Check if object is an anyxml.
Definition: obj.c:13345
not set
Definition: obj.h:1275
void obj_force_root(obj_template_t *obj)
Set the object as an anydata type of root.
Definition: obj.c:14242
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:15749
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:939
void obj_clean_deviationQ(dlq_hdr_t *deviationQ)
Clean and free an Q of object deviation statements.
Definition: obj.c:10039
xmlChar * name
name of grouping to use
Definition: obj.h:933
boolean obj_get_xpath_oper_ok(const obj_template_t *obj)
Get the object XPath oper OK flag.
Definition: obj.c:18616
One YANG &#39;list&#39; definition.
Definition: obj.h:862
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:873
ncx_status_t status
status-stmt
Definition: obj.h:884
obj_key_t * obj_first_key(obj_template_t *obj)
Get the first key record.
Definition: obj.c:9546
uint32 yang_hash
experimental: not used
Definition: obj.h:1144
boolean obj_in_action(const obj_template_t *obj)
Check if the object is within or is an action method.
Definition: obj.c:14115
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:8248
boolean obj_is_leaf_list(const obj_template_t *obj)
Check if object is a proper leaf-list.
Definition: obj.c:13410
ncx_error_t tkerr
file and line info for compiler
Definition: obj.h:764
boolean maxset
max-elements set
Definition: obj.h:882
xmlChar * keystr
key-stmt (not required if config=false)
Definition: obj.h:867
ncx_error_t mandatory_tkerr
same comment as tkerr
Definition: obj.h:1329
boolean obj_is_system_ordered(const obj_template_t *obj)
Check if the object is system or user-ordered.
Definition: obj.c:14538
boolean set_snmp_flags
need SNMP flags
Definition: obj.h:1160
YANG module data structures Many internal representations of YANG module constructs.
xmlChar * ref
reference-stmt (not saved by server)
Definition: obj.h:777
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:14924
obj_unique_t * obj_new_unique(void)
Alloc and Init a obj_unique_t struct.
Definition: obj.c:9129
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:10265
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:10486
boolean obj_is_rpcio(const obj_template_t *obj)
Check if the object is an RPC IO node.
Definition: obj.c:14070
boolean obj_is_uses(const obj_template_t *obj)
Check if object is a YANG uses-stmt.
Definition: obj.c:13539
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:14983
within data
Definition: obj.h:728
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:16944
void obj_force_disabled(obj_template_t *obj)
Force an object to be disabled.
Definition: obj.c:17971
boolean obj_in_rpc_reply(const obj_template_t *obj)
Check if the object is in an rpc-reply/output section.
Definition: obj.c:13992
This object represents a YANG leaf-list data node.
Definition: obj.h:628
One YANG &#39;leaf&#39; or &#39;anyxml&#39; or &#39;anydata&#39; definition.
Definition: obj.h:792
uint8 silflags
see OBJ_FL_* definitions
Definition: obj.h:1151
ncx_status_t obj_get_status(const obj_template_t *obj)
Get the status field for this obj.
Definition: obj.c:10826
token parsing chain (main parser control block)
Definition: tk.h:415
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:839
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:11585
uint32 uflags
see OBJ_FL_* definitions
Definition: obj.h:1150
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:12123
typ_def_t * typdef
typedef for metadata
Definition: obj.h:1266
obj_deviate_arg_t
type of deviation for each deviate entry
Definition: obj.h:1274
xmlChar * presence
presence-stmt
Definition: obj.h:780
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:10327
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:967
boolean obj_is_choice(const obj_template_t *obj)
Check if object is a YANG choice.
Definition: obj.c:13499
deviate delete
Definition: obj.h:1277
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:5605
xmlChar * xpath
saved unique str for this obj
Definition: obj.h:752
obj_template_t * targobj
target object when resolved
Definition: obj.h:1349
obj_unique_t * obj_first_unique(obj_template_t *listobj)
Get the first unique-stmt for a list.
Definition: obj.c:9316
const xmlChar * obj_get_description(const obj_template_t *obj)
Get the description field for this obj.
Definition: obj.c:10886
ncx_status_t status
status-stmt
Definition: obj.h:1068
const obj_key_t * obj_first_ckey(const obj_template_t *obj)
Get the first key record: Const version.
Definition: obj.c:9604
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:1019
deviate replace
Definition: obj.h:1278
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:9401
dlq_hdr_t * obj_get_defvalQ(obj_template_t *obj)
Get the leaf-list default Q.
Definition: obj.c:17531
ncx_backptr_t * obj_first_inherit_when_ptr(obj_template_t *obj)
Get first xpath pointer struct.
Definition: obj.c:16296
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:14379
struct xpath_pcb_t_ * obj_first_xpath_backptr(obj_template_t *obj)
Get the first xpath backptr.
Definition: obj.c:16367
boolean obj_has_name(const obj_template_t *obj)
Check if the specified object type has a name.
Definition: obj.c:10741
void obj_free_deviation(obj_deviation_t *deviation)
Clean and free an object deviation statement.
Definition: obj.c:10011
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:6934
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:17948
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:13757
XML Utilities.
xmlChar * descr
description-stmt (not saved by server)
Definition: obj.h:774
void obj_set_abstract(obj_template_t *obj)
Set the abstract flag for the yang-data node.
Definition: obj.c:17814
custom error message control block
Definition: obj.h:1108
One component in a YANG list unique target.
Definition: obj.h:749
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:17427
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:5752
void obj_free_deviate(obj_deviate_t *deviate)
Clean and free an object deviate statement.
Definition: obj.c:9926
ncx_error_t presence_tkerr
same comment as descr_tkerr applies here
Definition: obj.h:976
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:11248
boolean obj_is_root(const obj_template_t *obj)
Check if object is marked as a root object.
Definition: obj.c:14226
boolean obj_any_notifs(const dlq_hdr_t *datadefQ)
Check if there are any notifications in the datadefQ.
Definition: obj.c:9869
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:6702
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:936
obj_defval_tk_t * obj_first_dev_defval_tk(const obj_deviate_t *dev)
Get the first defval_tk entry.
Definition: obj.c:17588
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:7238
rpc input
Definition: obj.h:725
ncx_error_t tkerr
file and line info for compiler
Definition: obj.h:1155
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:6313
not set
Definition: obj.h:613
uint16 obj_get_key_num(obj_template_t *obj)
Get the key number for the object.
Definition: obj.c:17006
xmlns_id_t obj_get_nsid(const obj_template_t *obj)
Get the namespace ID for this object.
Definition: obj.c:12469
ncx_btype_t obj_get_basetype(const obj_template_t *obj)
Get the NCX base type enum for the object type.
Definition: obj.c:12151
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:10061
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:16757
boolean obj_is_anydata(const obj_template_t *obj)
Check if object is an anydata.
Definition: obj.c:13358
boolean obj_notif_log_drops(const obj_template_t *obj)
Check if the event drops for the notification object is enabled.
Definition: obj.c:17122
rpc output
Definition: obj.h:726
boolean obj_is_data_node(const obj_template_t *obj)
Check if the object is a real node type.
Definition: obj.c:13904
ncx_backptr_t * obj_next_inherit_when_ptr(ncx_backptr_t *ptr)
Get the next xpath pointer struct.
Definition: obj.c:16314
const xmlChar * obj_get_keystr(obj_template_t *obj)
Get the key string for this list object.
Definition: obj.c:15872
void obj_clean_datadefQ(dlq_hdr_t *que)
Clean and free all the obj_template_t structs in the specified Q.
Definition: obj.c:8222
dlq_hdr_t * obj_get_appinfoQ(obj_template_t *obj)
Get the appinfoQ for this obj.
Definition: obj.c:11360
boolean obj_in_notif(const obj_template_t *obj)
Check if the object is in a notification.
Definition: obj.c:14026
boolean obj_is_hidden(const obj_template_t *obj)
Check if object is marked as a hidden object.
Definition: obj.c:14213
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:7581
obj_metadata_t * obj_next_metadata(const obj_metadata_t *meta)
Get the next object metadata definition in the object.
Definition: obj.c:15261
ncx_iqual_t obj_get_iqualval(obj_template_t *obj)
Get the instance qualifier for this object.
Definition: obj.c:12501
ncx_error_t minelems_tkerr
also minset
Definition: obj.h:986
obj_index_t last_index
internal numbering data for val_child ordering
Definition: obj.h:891
boolean obj_has_iffeature(obj_template_t *obj)
Check any if-feature statements exist for the specified object.
Definition: obj.c:14697
dlq_hdr_t * obj_get_leafrefQ(const obj_template_t *obj)
Get the leafrefQ for this obj.
Definition: obj.c:11432
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:14188
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:13862
boolean obj_is_augment(const obj_template_t *obj)
Check if the obj is an augment statement.
Definition: obj.c:13777
grp_template_t * grp
const back-ptr to grouping
Definition: obj.h:940
obj_key_t * obj_last_key(obj_template_t *obj)
Get the last key record.
Definition: obj.c:9575
boolean minset
min-elements set
Definition: obj.h:847
obj_type_t
enumeration for different YANG data def statement types the enum order is significant!!! do not chang...
Definition: obj.h:612
boolean obj_parent_same_module(const obj_template_t *obj)
Check if the object parent object is the same.
Definition: obj.c:17236
xmlChar * def
default value string
Definition: obj.h:743
struct obj_template_t_ * defaultparm
default parm for yangcli
Definition: obj.h:786
status_t obj_assign_xpath_backptr(obj_template_t *obj, struct xpath_pcb_t_ *xpath)
Set an xpath-expr backptr.
Definition: obj.c:16444
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:17055
void obj_number_data_object(obj_template_t *obj)
Number the object tree; initial setup.
Definition: obj.c:17477
defines the snmp oid value, stored as an array of integers for easier comparision when performing AVL...
Definition: obj.h:1126
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:16650
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:15156
One YANG refine statement struct.
Definition: obj.h:948
ncx_transaction_id_t must_txid
current edit transaction ID for MUST test default nodes pruning
Definition: obj.h:1229
boolean empty
for display in yangdump
Definition: obj.h:1360
obj_template_t * obj_get_parent(obj_template_t *obj)
Get the parent of the current object.
Definition: obj.c:12753
xmlChar * name
choice name
Definition: obj.h:897
uint8 obj_testflags_t
object test flags
Definition: obj.h:1133
not set
Definition: obj.h:724
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:15054
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:16224
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:15970
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:13658
const xmlChar * obj_get_altname(const obj_template_t *obj)
Get the alt-name for this object, if any.
Definition: obj.c:15945
boolean obj_is_mandatory(obj_template_t *obj)
Figure out if the obj is YANG mandatory or not.
Definition: obj.c:13584
uint8 cnt
amount of Sub-Ids (max 128)
Definition: obj.h:1127
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:14284
boolean obj_is_password(const obj_template_t *obj)
Check if object is marked as a password object.
Definition: obj.c:14269
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:10386
One YANG &#39;choice&#39; definition.
Definition: obj.h:896
ncx_error_t config_tkerr
same comment as tkerr
Definition: obj.h:1323
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:18684
obj_unique_t * obj_find_unique(dlq_hdr_t *que, const xmlChar *xpath)
Find a specific unique-stmt.
Definition: obj.c:9280
void obj_free_unique(obj_unique_t *un)
Free a obj_unique_t struct.
Definition: obj.c:9175
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:803
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:7158
typ_def_t * typdef
typedef if deviating the type
Definition: obj.h:1305
xmlChar * name
leaf-list name
Definition: obj.h:830
This object represents a YANG notification statement.
Definition: obj.h:698
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:14822
xmlChar * name
rpc method name
Definition: obj.h:1016
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:8417
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:18460
xmlChar * prefix
prefix present in uses-stmt
Definition: obj.h:932
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:9472
custom error message parameter control block
Definition: obj.h:1095
struct obj_template_t_ * leafrefobj
leafref obj backptr only if btyp == NCX_BT_LEAFREF
Definition: obj.h:857
This object represents a YANG rpc statement.
Definition: obj.h:681
const xmlChar * obj_get_type_name(const obj_template_t *obj)
Get the typename for an object.
Definition: obj.c:12434
status_t obj_cache_datarule(obj_template_t *obj, void *rule)
Set the data-rule back-ptr for this node.
Definition: obj.c:18084
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:12949
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:1199
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:17766
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:16185
boolean is_action
YANG 1.1 only.
Definition: obj.h:1028
boolean obj_is_action(const obj_template_t *obj)
Check if the object is a YANG 1.1 action.
Definition: obj.c:14102
ncx_error_t type_tkerr
same comment as tkerr
Definition: obj.h:1308
obj_template_t * obj_get_augment_targobj(obj_template_t *obj)
Get the target object for an augments object.
Definition: obj.c:15991
boolean xpath_oper_ok
object OK for referencing oper-data in XPath
Definition: obj.h:1161
const xmlChar * obj_get_mod_name(const obj_template_t *obj)
Get the module name for this object.
Definition: obj.c:12250
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:5944
boolean obj_get_config_flag_deep(const obj_template_t *obj)
get config flag during augment expand
Definition: obj.c:13084
xmlChar * presence
refining the presence-stmt
Definition: obj.h:973
const xmlChar * obj_get_default(const obj_template_t *obj)
Get the default value for the specified object.
Definition: obj.c:11644
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:17738
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:18354
boolean obj_get_max_elements(obj_template_t *obj, uint32 *maxelems)
Get the max-elements clause for this object, if any.
Definition: obj.c:12664
void * cbset
cbset is different based on the object type:
Definition: obj.h:1187
typ_def_t * obj_get_base_typdef(obj_template_t *obj)
Get the base typdef for the leaf or leaf-list.
Definition: obj.c:12094
NCX Syntax Token Handler.
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:870
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:15290
xmlChar * matchstr
message string to match
Definition: obj.h:1089
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:9348
boolean obj_notif_enabled(const obj_template_t *obj)
Check if the notification object is enabled.
Definition: obj.c:17106
obj_deviate_t * obj_new_deviate(void)
Malloc and initialize the fields in a an object deviate statement.
Definition: obj.c:9901
xmlChar * path
path of replacement data
Definition: obj.h:1097
boolean obj_is_rpc(const obj_template_t *obj)
Check if the object is an RPC method.
Definition: obj.c:14057
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:11850
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:1223
Parameter Type Handler.
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:1022
obj_defval_tk_t * obj_new_defval_tk(void)
Create a new object default tk record;.
Definition: obj.c:17496
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:8191
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:17894
boolean obj_is_xpath_string(const obj_template_t *obj)
Check if object is an XPath string.
Definition: obj.c:14468
boolean obj_is_singular(const obj_template_t *obj)
Check if the object can have only one instance or not.
Definition: obj.c:18240
const xmlChar * obj_get_oid_string(obj_template_t *obj)
Get object OID sting value.
Definition: obj.c:17836
ncx_status_t status
status-stmt
Definition: obj.h:1024
boolean config
deviating config-stmt
Definition: obj.h:1320
void obj_exit_xpath_mode(void)
Exit xpath mode and stop ignoring obj_is_enabled.
Definition: obj.c:17719
const xmlChar * obj_get_mod_prefix(const obj_template_t *obj)
Get the module prefix for this object.
Definition: obj.c:12199
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:16387
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:11287
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:1256
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:719
uint8 sil_priority
picks SIL callback order
Definition: obj.h:1152
One YANG rpc-stmt struct.
Definition: obj.h:1014
boolean obj_is_np_container(const obj_template_t *obj)
Check if the object is an Non-Presence-container.
Definition: obj.c:14561
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:6072
boolean obj_is_abstract_ex(const obj_template_t *obj)
DUPLICATE FUNCTION OF obj_in_abstract()
Definition: obj.c:17795
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:12780
const xmlChar * obj_get_reference(const obj_template_t *obj)
Get the reference field for this obj.
Definition: obj.c:11126
xmlChar * name
list name
Definition: obj.h:864
uint32 xflags
see OBJ_FL_* definitions
Definition: obj.h:1147
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:6803
ncx_transaction_id_t edit_txid
current edit transaction ID for commit test pruning
Definition: obj.h:1226
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:6847
boolean obj_find_defval(obj_template_t *obj, const xmlChar *find_defval)
Find a default.
Definition: obj.c:17658
typ_def_t * obj_get_typdef(obj_template_t *obj)
Get the typdef for the leaf or leaf-list.
Definition: obj.c:12065
boolean obj_is_secure(const obj_template_t *obj)
Check if object is tagged ncx:secure.
Definition: obj.c:14512
obj_defval_tk_t * obj_next_defval_tk(const obj_defval_tk_t *defval_tk)
Get the next defval_tk entry.
Definition: obj.c:17569
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:11314
case
Definition: obj.h:727
boolean notif_log_drops
log drops for this event type
Definition: obj.h:1074
obj_index_t index
object index for val_child ordering
Definition: obj.h:1157
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:18012
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:15126
xmlChar * xpath
complete saved unique str
Definition: obj.h:760
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:11826
ncx_error_t arg_tkerr
same comment as tkerr
Definition: obj.h:1302
const xmlChar * obj_get_deviate_arg(obj_deviate_arg_t devarg)
Get the deviate-arg string from its enumeration.
Definition: obj.c:9957
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:1064
boolean notif_enabled
enabled or disabled in server
Definition: obj.h:1073
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:1042
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:11945
void obj_clear_datarule(obj_template_t *obj, const void *rule)
Clear the datarule back-ptr for this node.
Definition: obj.c:18119
uint32 minelems
min-elements value
Definition: obj.h:848
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:13790
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:5900
boolean obj_rpc_has_output(obj_template_t *obj)
Check if the RPC object has any real output children.
Definition: obj.c:15041
boolean empty
deviate-stmt is empty
Definition: obj.h:1296
ncx_error_t mandatory_tkerr
mandatory and mandset are in the object flags
Definition: obj.h:984
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:14435
xmlChar * name
input or output
Definition: obj.h:995
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:10793
ncx_transaction_id_t leafref_txid
current edit transaction ID for intermediate leafref processing
Definition: obj.h:1235
struct xpath_pcb_t_ * when
optional when clause
Definition: obj.h:1167
xmlns_id_t nsid
in case parent == NULL
Definition: obj.h:1267
boolean annotation
set from annotation
Definition: obj.h:1361
void * get2cb
get2fn is getcb_fn2_t for local GET2
Definition: obj.h:1190
typ_def_t * typdef
typedef for the data type
Definition: obj.h:842
boolean ordersys
ordered-by system or user
Definition: obj.h:879
One YANG &#39;notification&#39; clause definition.
Definition: obj.h:1059
ncx_leafref_class_t
Classification for the types of leafref path statements wrt/ how they can be cached.
Definition: ncxtypes.h:1431
const void * obj_get_description_addr(const obj_template_t *obj)
Get the address of the description field for this obj.
Definition: obj.c:11067
void obj_set_sil_priority(obj_template_t *obj, uint8 prio)
Set the SIL priority field.
Definition: obj.c:17280
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:8591
struct obj_template_t_ * keyobj
backptr to key object
Definition: obj.h:735
uint32 maxelems
deviating max-elements
Definition: obj.h:1336
const xmlChar * obj_get_mod_version(const obj_template_t *obj)
Get the module version for this object.
Definition: obj.c:12408
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:11907
One component in a YANG list unique target.
Definition: obj.h:758
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:16113
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:11032
void * obj_get_presence_string_field(const obj_template_t *obj)
Get the address ot the presence-stmt value, if any.
Definition: obj.c:12914
One YANG uses statement struct.
Definition: obj.h:931
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:17161
One YANG input-stmt or output-stmt struct.
Definition: obj.h:994
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:7370
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:15797
struct obj_template_t_ * targobj
resolved target object to refine
Definition: obj.h:953
xmlChar * name
metadata name
Definition: obj.h:1265
This object represents a YANG input or output statement.
Definition: obj.h:689
ncx_error_t tkerr
file and line info for compiler
Definition: obj.h:1358
void obj_free_defval_tk(obj_defval_tk_t *def)
Delete an object default tk record;.
Definition: obj.c:17513
struct obj_template_t_ * parent
obj containing metadata
Definition: obj.h:1264
boolean obj_has_children(obj_template_t *obj)
Check if there are any accessible nodes within the object.
Definition: obj.c:14905
dlq_hdr_t * obj_get_mustQ(const obj_template_t *obj)
Get the mustQ for this obj.
Definition: obj.c:11386
status_t res
parse status
Definition: obj.h:1362
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:12807
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:14743
ncx_error_t maxelems_tkerr
also maxset
Definition: obj.h:1337
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:901
uint32 maxelems
max-elements value
Definition: obj.h:850
uint32 maxelems
max-elements value
Definition: obj.h:987
obj_iffeature_ptr_t * obj_next_iffeature_ptr(obj_iffeature_ptr_t *iffptr)
Get the next if-feature pointer.
Definition: obj.c:16278
XML namespace support.
ncx_error_t ref_tkerr
same comment as descr_tkerr applies here
Definition: obj.h:970
NCX System Logging Manager.
xmlChar * langstr
language string
Definition: obj.h:1111
ncx_status_t status
status-stmt
Definition: obj.h:907
boolean obj_in_list(const obj_template_t *obj)
Check if object is nested within a list.
Definition: obj.c:13436
obj_key_t * obj_prev_key(obj_key_t *objkey)
Get the previous key record.
Definition: obj.c:9659
boolean caseQclone
flag caseQ is cloned
Definition: obj.h:906
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:7212
obj_template_t * obj_new_template(obj_type_t objtype)
Malloc and initialize the fields in a an object template.
Definition: obj.c:5467
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:18660
boolean seen
used by yangdiff
Definition: obj.h:736
YANG Grouping Statement Handler.
xmlChar * targmodname
target module name
Definition: obj.h:1348
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:8144
void obj_free_iffeature_ptr(obj_iffeature_ptr_t *iffptr)
Free an obj_iffeature_ptr_t struct.
Definition: obj.c:16244
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:6370
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:14365
obj_iffeature_ptr_t * obj_first_iffeature_ptr(obj_template_t *obj)
Get first if-feature pointer.
Definition: obj.c:16260
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:10159
xmlChar * name
name of container
Definition: obj.h:771
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:14998
boolean obj_has_get2cb(obj_template_t *obj)
Check if current object has GET2 callback registered.
Definition: obj.c:18210
deviate not-supported
Definition: obj.h:1279
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:919
boolean in_data
defined in data, YANG 1.1 only
Definition: obj.h:1075
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:6892
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:11777
xmlChar * defval
default-stmt only in a leaf
Definition: obj.h:800
ncx_leafref_class_t obj_get_leafref_class(obj_template_t *obj)
Get the leafref class for a leafref object.
Definition: obj.c:17404
oid_t * oidc
OID component.
Definition: obj.h:1128
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:15193
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:16602
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:16073
boolean nameclone
the nameclone flag is set even though the clone bit is also set; this can probably be removed ...
Definition: obj.h:925
struct obj_template_t_ * parent
backptr to parent
Definition: obj.h:1163
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:18416
xmlChar * units
units-stmt only in a leaf
Definition: obj.h:797
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:13295
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:5791
boolean obj_is_external_augment(obj_template_t *obj)
Check if an object is an external augment.
Definition: obj.c:16028
void obj_init_unique(obj_unique_t *un)
Init a obj_unique_t struct.
Definition: obj.c:9152
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:12846
boolean obj_is_notif(const obj_template_t *obj)
Check if the object is a notification.
Definition: obj.c:14157
obj_key_t * obj_new_key(void)
Alloc and Init a obj_key_t struct.
Definition: obj.c:9424
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:12333
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:14601
typ_def_t * typdef
typedef for the data type (leaf only)
Definition: obj.h:809
boolean ordersys
ordered-by system or user
Definition: obj.h:846
This object represents a YANG presence or non-presence container.
Definition: obj.h:622
const void * obj_get_reference_addr(const obj_template_t *obj)
Get the reference field for this obj.
Definition: obj.c:11185
const xmlChar * obj_get_mod_xmlprefix(const obj_template_t *obj)
Get the module prefix for this object.
Definition: obj.c:12230
boolean is_errortag
error-tag flag
Definition: obj.h:1090
boolean obj_is_leaf(const obj_template_t *obj)
Check if object is a proper leaf.
Definition: obj.c:13397
xmlChar * basestr
base string
Definition: obj.h:1110
dlq_hdr_t * obj_get_datadefQ(obj_template_t *obj)
Get the datadefQ (or caseQ) if this object has one.
Definition: obj.c:11529
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:904
boolean obj_is_short_case(obj_template_t *obj)
Check if the object is a short case statement.
Definition: obj.c:14772
xmlChar * defval
default case
Definition: obj.h:898
obj_augtype_t augtype
internal augment type enum
Definition: obj.h:1051
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:1293
boolean obj_is_crypt_hash(const obj_template_t *obj)
Check if the object is a leaf of type crypt-hash.
Definition: obj.c:17442