yumapro  22.10T-8
YumaPro SDK
Loading...
Searching...
No Matches
obj.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2008 - 2012, Andy Bierman, All Rights Reserved.
3 * Copyright (c) 2012 - 2022, 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
33date init comment
34----------------------------------------------------------------------
3509-dec-07 abb Begun
3621jul08 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
55extern "C" {
56#endif
57
58/********************************************************************
59* *
60* C O N S T A N T S *
61* *
62*********************************************************************/
63
64/* object pointer inside obj_key_t struct */
65#define OBJ_KEYOBJ(KO) (KO)->keyobj
66
67/* default vaule for config statement */
68#define OBJ_DEF_CONFIG TRUE
69
70/* default vaule for mandatory statement */
71#define OBJ_DEF_MANDATORY FALSE
72
73/* number of static xpath backptrs to have in each object node */
74/*** CHANGED FROM 4 to 2 23oct19 ***/
75#define OBJ_NUM_XPATH_BACKPTRS 2
76
77/* each object can have a SIL callback priority 1..255 */
78#define OBJ_DEF_SIL_PRIORITY 255
79#define OBJ_MIN_SIL_PRIORITY 1
80#define OBJ_MAX_SIL_PRIORITY 255
81
82
83/********* flags field in obj_template_t *************/
84
85/* object is cloned from a grouping, for a uses statement */
86#define OBJ_FL_CLONE bit0
87
88/* def is a CLI text block */
89#define OBJ_FL_CLI_TEXT_BLOCK bit1
90
91/* clone source
92 * == 0 : cloned object from uses
93 * == 1 : cloned object from augment
94 */
95#define OBJ_FL_AUGCLONE bit2
96
97/* object is marked for deletion -- dynamic flag */
98#define OBJ_FL_DELETED bit3
99
100/* object is dirty in the candidate datastore; used by server only */
101#define OBJ_FL_CDIRTY bit4
102
103/* object is a top-level definition within a module or submodule */
104#define OBJ_FL_TOP bit5
105
106/* object was entered with a 'kw name;' format and is
107 * considered empty by the yangdump program
108 */
109#define OBJ_FL_EMPTY bit6
110
111/* object has been visited by the yangdiff program */
112#define OBJ_FL_SEEN bit7
113
114/* bit7 is reused in the server since the 'seen' bit only
115 * applies to the yangdiff-pro program
116 * object is dirty in the running datastore; used by server only
117 */
118#define OBJ_FL_RDIRTY bit7
119
120/* object marked as changed by the yangdiff program */
121#define OBJ_FL_DIFF bit8
122
123/* object is marked as ncx:hidden */
124#define OBJ_FL_HIDDEN bit9
125
126/* object is marked as ncx:root */
127#define OBJ_FL_ROOT bit10
128
129/* object is marked as a password */
130#define OBJ_FL_PASSWD bit11
131
132/* object is marked as a CLI-only node */
133#define OBJ_FL_CLI bit12
134
135/* object is marked as an XSD list data type */
136#define OBJ_FL_XSDLIST bit13
137
138/* OBJ_TYP_LEAF object is being uses as a key */
139#define OBJ_FL_KEY bit14
140
141/* object is marked as abstract: not CLI or config data */
142#define OBJ_FL_ABSTRACT bit15
143
144/* object is marked as config set so OBJ_FL_CONFIG is valid */
145#define OBJ_FL_CONFSET bit16
146
147/* object config value */
148#define OBJ_FL_CONFIG bit17
149
150/* object is marked as mandatory set so OBJ_FL_MANDATORY is valid */
151#define OBJ_FL_MANDSET bit18
152
153/* object mandatory value */
154#define OBJ_FL_MANDATORY bit19
155
156/* object used in a unique-stmt within a list */
157#define OBJ_FL_UNIQUE bit20
158
159/* object data type is an XPath string */
160#define OBJ_FL_XPATH bit21
161
162/* object data type is a QName string */
163#define OBJ_FL_QNAME bit22
164
165/* object data type is a schema-instance string */
166#define OBJ_FL_SCHEMAINST bit23
167
168/* object is tagged ncx:secure */
169#define OBJ_FL_SECURE bit24
170
171/* object is tagged ncx:very-secure */
172#define OBJ_FL_VERY_SECURE bit25
173
174/* object is tagged ncx:default-parm-equals-ok */
175#define OBJ_FL_CLI_EQUALS_OK bit26
176
177/* object is tagged ncx:sil-delete-children-first */
178#define OBJ_FL_SIL_DELETE_CHILDREN_FIRST bit27
179
180/* object is tagged as ncx:user-write with no create access */
181#define OBJ_FL_BLOCK_CREATE bit28
182
183/* object is tagged as ncx:user-write with no update access */
184#define OBJ_FL_BLOCK_UPDATE bit29
185
186/* object is tagged as ncx:user-write with no delete access */
187#define OBJ_FL_BLOCK_DELETE bit30
188
189/* object is tagged as ywx:rpc-root operation container */
190#define OBJ_FL_RPC_ROOT bit31
191
192
193/********* xflags field in obj_template_t *************/
194
195/* object is a default NP-container */
196#define OBJ_FL_DEF_NPCON bit0
197
198/* object has been checked for enabled;
199 * this flag needs to be cleared if dynamic
200 * features are used and the feature becomes disabled!!!
201 */
202#define OBJ_FL_ENABLED_CHK bit1
203
204/* indicates that the object is enabled, which just means
205 * any if-features statements for this object are true
206 */
207#define OBJ_FL_ENABLED bit2
208
209/* indicates that this visible object has a visible sibling
210 * object with the same local-name but from another module
211 */
212#define OBJ_FL_DUP_LOCAL bit3
213
214/* indicates that this object is an RPC operation that is
215 * not allowed to be called concurrently by multiple sessions
216 * at once
217 */
218#define OBJ_FL_EXCLUSIVE_RPC bit4
219
220/* indicates that this object is has the sil-force-replay
221 * flag set
222 */
223#define OBJ_FL_SIL_FORCE_REPLAY bit5
224
225/* indicates that this object is has the sil-force-replay
226 * flag set for a replace operation
227 */
228#define OBJ_FL_SIL_FORCE_REPLACE_REPLAY bit6
229
230/* indicates that this object is an anyxml object that is
231 * really a ywx:datapath node. The object path-expr will
232 * be sent in XML instances of the object.
233 * (Like object Location header)
234 */
235#define OBJ_FL_DATAPATH bit7
236
237/* indicates that is object has get2 callbacks registered
238 * either for 1 or more submodules. This flag is
239 * set and cleared dynamically so do not cache the value
240 */
241#define OBJ_FL_REMOTE_GET2 bit8
242
243/* indicates the 'units' field has been replaced with
244 * a malloced string via deviations, could be a clone
245*/
246#define OBJ_FL_FREE_UNITS bit9
247
248/* indicates the 'typdef' field has been replaced with
249 * a malloced struct via deviations, could be a clone
250*/
251#define OBJ_FL_FREE_TYPDEF bit10
252
253
254/* indicates the object uses the edit2 callback mode */
255#define OBJ_FL_EDIT2_MODE bit11
256
257/* indicates that leafref validation has been disabled for the
258 * object. The leafref will be treated as if it had a
259 * require-instance false; sub-statement
260 */
261#define OBJ_FL_SKIP_LEAFREF bit12
262
263/* indicates that the object yang_hash field contains
264 * the YANG HASH value for the node; hash can be zero
265 * so set this flag to make sure obj->yang_hash field is set
266 */
267#define OBJ_FL_YANG_HASH bit13
268
269/* indicates that the object yang_hash field contains
270 * the rehashed value for the node because of a clash
271 */
272#define OBJ_FL_YANG_REHASH bit14
273
274/* indicates that the cbset (callback set) is malloced
275 * and a simple m__free(cbset) is needed to clean up
276 */
277#define OBJ_FL_CBSET_MALLOCED bit15
278
279/* indicates the object is 1 of the ncx generic templates */
280#define OBJ_FL_GENERIC bit16
281
282/* indicates the object has defaults has been checked */
283/* NOT USED */
284#define OBJ_FL_DEF_DONE bit17
285
286/* indicates the object has defaults (valid if bit17 set) */
287/* NOT USED */
288#define OBJ_FL_DEF bit18
289
290/* indicates the object is an RPC that is OK for library mode */
291#define OBJ_FL_LIBMODE bit19
292
293/* indicates the object contains a smiv2 object identifier */
294#define OBJ_FL_SMIV2_OID bit20
295
296/* indicates object is tagged ywx:no-nvstore */
297#define OBJ_FL_NO_NVSTORE bit21
298
299/* object is tagged ncx:no-sil-delete-children-first */
300#define OBJ_FL_NO_SIL_DELETE_CHILDREN_FIRST bit22
301
302/* object is tagged as a source node in a yangmap nodemap */
303#define OBJ_FL_YANGMAP_SOURCE bit23
304
305/* object is tagged as a target node in a yangmap nodemap */
306#define OBJ_FL_YANGMAP_TARGET bit24
307
308/* object is tagged as a child node in a yangmap nodemap */
309#define OBJ_FL_YANGMAP_CHILD bit25
310
311/* object is tagged as a keymap node in a yangmap nodemap */
312#define OBJ_FL_YANGMAP_KEY bit26
313
314/* indicates that DUP_LOCAL test has been done */
315#define OBJ_FL_DUP_LOCAL_DONE bit27
316
317/* This bit is set in the agt_val_silcall to indicate that the
318 * Transaction Hook is already setup for the object and that
319 * any consecutive attempts to assign the hook to this object
320 * should be skipped
321 */
322#define OBJ_FL_TRANS_HOOK_SET bit29
323
324/* This bit is set to indicate that the sil-test-get-when
325 * override flag is set for the object which is expected
326 * to be an operational data node
327 */
328#define OBJ_FL_GET_WHEN_SET bit30
329
330/* This bit is set to indicate the value of the
331 * override flag and is only used if OBJ_FL_GET_WHEN_SET
332 * bit is set to 1
333 */
334#define OBJ_FL_GET_WHEN bit31
335
336
337/********* xflags2 field in obj_template_t *************/
338 /* xflags2 is a continuation of xflags bits */
339
340/* This bit is set to indicate that the sil-aio-get2
341 * All in One extension flag is set for the object.
342 */
343#define OBJ_FL_AIO_GET2 bit0
344
345/* This flag indicates that this object has All in One children
346 * But itself it does not have this extension setup.
347 * Will be set only if the current object is GET2 object with
348 * GET2 flags setup.
349 *
350 * GET2 object but not All in One object, but a parent of AIO
351 */
352#define OBJ_FL_AIO_PARENT bit1
353
354/* This bit is set to indicate that the sil-aio-get2
355 * All in One extension flag is set for the object and has XML
356 * parameter setup.
357 */
358#define OBJ_FL_AIO_GET2_XML bit2
359
360/* This bit is set to indicate that the sil-aio-get2
361 * All in One extension flag is set for the object and has JSON
362 * parameter setup.
363 */
364#define OBJ_FL_AIO_GET2_JSON bit3
365
366/* This bit is set to check whether the object has Set Default
367 * Hook callback and should invoke it in order to set custom
368 * system default value BUT only if there is no any YANG defaults.
369 */
370#define OBJ_FL_DEF_HOOK bit4
371
372/* This bit indicates that the leaf or leaf-list is really
373 * an openconfig-hashed-value string not a plain string
374 * and not an ncx:password
375 */
376#define OBJ_FL_OC_HASHED_VALUE bit5
377
378/* This bit is set to indicate that the object is NOT OK for nolock-get
379 * Use on config=false nodes that it is not safe to GET in the
380 * PTHREADS build without a rdlock on running
381 */
382#define OBJ_FL_BAN_NOLOCK_GET bit6
383
384/* This bit is set to indicate that the object has Mount Point
385 * TBD: Why is this needed since the rootcb will be set only
386 * if the object is a mount point?
387 */
388#define OBJ_FL_MOUNT_POINT bit7
389
390/* This bit is set if there is a descendant that is a mount point
391 * This is needed so delete or replace operations on the MP or
392 * its ancestor will force SIL and SIL-SA callbacks to be invoked
393 * instead of skipping them.
394 */
395#define OBJ_FL_DESC_MOUNT_POINT bit8
396
397
398/********* uflags field in obj_template_t *************/
399
400/* This field represents the user flags and no system bits
401 * are defined for this field. It is used by yang_obj_cb
402 * callback functions to set user-specific flags
403 */
404
405/********* silflags field in obj_template_t *************/
406
407/* This bit is set in agt_rpc to indicate the RPC is
408 * currently being invoked; If another session attempts
409 * to invoke the RPC while busy, and the obj_is_exclusive_rpc
410 * the RPC request will be rejected by the server
411 */
412#define OBJ_FL_SIL_BUSY bit0
413
414#define OBJ_TYPE(OBJ) (OBJ)->objtype
415
416#define OBJ_INDEX(OBJ) (OBJ)->index
417
418/* mark the object as a top object since the yang_obj does
419 * not catch top-level uses from a grouping as a top object
420 */
421#define OBJ_SET_TOP(OBJ) (OBJ)->flags |= OBJ_FL_TOP
422
423#define OBJ_SET_SIL_BUSY(OBJ) (OBJ)->silflags |= OBJ_FL_SIL_BUSY
424
425#define OBJ_CLEAR_SIL_BUSY(OBJ) (OBJ)->silflags &= ~OBJ_FL_SIL_BUSY
426
427#define OBJ_IS_SIL_BUSY(OBJ) ((OBJ)->silflags & OBJ_FL_SIL_BUSY)
428
429#define OBJ_GET_CBSET(OBJ) (OBJ)->cbset
430
431
432/* Get2 support */
433#define OBJ_SET_REMOTE_GET2(OBJ) (OBJ)->xflags |= OBJ_FL_REMOTE_GET2
434
435#define OBJ_CLEAR_REMOTE_GET2(OBJ) (OBJ)->xflags &= ~OBJ_FL_REMOTE_GET2
436
437#define OBJ_HAS_REMOTE_GET2(OBJ) ((OBJ)->xflags & OBJ_FL_REMOTE_GET2)
438
439#define OBJ_SET_GET2CB(OBJ, CB) (OBJ)->get2cb = CB
440
441#define OBJ_GET_GET2CB(OBJ) (getcb_fn2_t)(OBJ)->get2cb
442
443#define OBJ_SET_EDIT2_MODE(OBJ) (OBJ)->xflags |= OBJ_FL_EDIT2_MODE
444
445#define OBJ_IS_EDIT2_MODE(OBJ) ((OBJ)->xflags & OBJ_FL_EDIT2_MODE)
446
447
448/* XPath tuning */
449#define OBJ_SET_SKIP_LEAFREF(OBJ) (OBJ)->xflags |= OBJ_FL_SKIP_LEAFREF
450
451#define OBJ_IS_SKIP_LEAFREF(OBJ) ((OBJ)->xflags & OBJ_FL_SKIP_LEAFREF)
452
453
454
455/* Object YANG Hash */
456#define OBJ_SET_YANG_HASH(OBJ) (OBJ)->xflags |= OBJ_FL_YANG_HASH
457
458#define OBJ_IS_YANG_HASH(OBJ) ((OBJ)->xflags & OBJ_FL_YANG_HASH)
459
460
461/* Object Rehash */
462#define OBJ_SET_YANG_REHASH(OBJ) (OBJ)->xflags |= OBJ_FL_YANG_REHASH
463
464#define OBJ_IS_YANG_REHASH(OBJ) ((OBJ)->xflags & OBJ_FL_YANG_REHASH)
465
466
467/* CBSET Malloced */
468#define OBJ_SET_CBSET_MALLOCED(OBJ) (OBJ)->xflags |= OBJ_FL_CBSET_MALLOCED
469
470#define OBJ_IS_CBSET_MALLOCED(OBJ) ((OBJ)->xflags & OBJ_FL_CBSET_MALLOCED)
471
472#define OBJ_CLEAR_CBSET_MALLOCED(OBJ) (OBJ)->xflags &= ~OBJ_FL_CBSET_MALLOCED
473
474/* Object is generic */
475#define OBJ_SET_GENERIC(OBJ) (OBJ)->xflags |= OBJ_FL_GENERIC
476
477#define OBJ_IS_GENERIC(OBJ) ((OBJ)->xflags & OBJ_FL_GENERIC)
478
479
480/* Object or children have a default value */
481/* NOT USED */
482#define OBJ_SET_DEF_DONE(OBJ) (OBJ)->xflags |= OBJ_FL_DEF_DONE
483
484/* NOT USED */
485#define OBJ_IS_DEF_DONE(OBJ) ((OBJ)->xflags & OBJ_FL_DEF_DONE)
486
487/* NOT USED */
488#define OBJ_SET_DEF(OBJ) (OBJ)->xflags |= OBJ_FL_DEF
489
490/* NOT USED */
491#define OBJ_IS_DEF(OBJ) ((OBJ)->xflags & OBJ_FL_DEF)
492
493/* Object is an RPC that is allowed in library mode */
494#define OBJ_SET_LIBMODE(OBJ) (OBJ)->xflags |= OBJ_FL_LIBMODE
495
496#define OBJ_IS_LIBMODE(OBJ) ((OBJ)->xflags & OBJ_FL_LIBMODE)
497
498#define OBJ_USER_FLAGS(OBJ) (OBJ)->uflags
499
500/* get the object pointer in an obj_key_t */
501#define OBJ_KEY_OBJ(K) (K)->keyobj
502
503/* get the current edit transaction id;
504 * -- changed on each transaction this object is tested
505 */
506#define OBJ_EDIT_TXID(OBJ) (OBJ)->edit_txid
507
508#define OBJ_EXTR_MUST_TXID(OBJ) (OBJ)->must_txid
509#define OBJ_EXTR_WHEN_TXID(OBJ) (OBJ)->when_txid
510#define OBJ_EXTR_LEAFREF_TXID(OBJ) (OBJ)->leafref_txid
511
512
513/* Object is flagged no-nvstore */
514#define OBJ_SET_NO_NVSTORE(OBJ) (OBJ)->xflags |= OBJ_FL_NO_NVSTORE
515
516#define OBJ_IS_NO_NVSTORE(OBJ) ((OBJ)->xflags & OBJ_FL_NO_NVSTORE)
517
518
519/* Object is flagged yangmap-source */
520#define OBJ_SET_YANGMAP_SOURCE(OBJ) \
521 (OBJ)->xflags |= OBJ_FL_YANGMAP_SOURCE
522
523#define OBJ_IS_YANGMAP_SOURCE(OBJ) \
524 ((OBJ)->xflags & OBJ_FL_YANGMAP_SOURCE)
525
526
527/* Object is flagged yangmap-target */
528#define OBJ_SET_YANGMAP_TARGET(OBJ) \
529 (OBJ)->xflags |= OBJ_FL_YANGMAP_TARGET
530
531#define OBJ_IS_YANGMAP_TARGET(OBJ) \
532 ((OBJ)->xflags & OBJ_FL_YANGMAP_TARGET)
533
534/* Object is flagged yangmap-childmap */
535#define OBJ_SET_YANGMAP_CHILD(OBJ) \
536 (OBJ)->xflags |= OBJ_FL_YANGMAP_CHILD
537
538#define OBJ_IS_YANGMAP_CHILD(OBJ) \
539 ((OBJ)->xflags & OBJ_FL_YANGMAP_CHILD)
540
541/* Object is flagged yangmap-keymap */
542#define OBJ_SET_YANGMAP_KEY(OBJ) \
543 (OBJ)->xflags |= OBJ_FL_YANGMAP_KEY
544
545#define OBJ_IS_YANGMAP_KEY(OBJ) \
546 ((OBJ)->xflags & OBJ_FL_YANGMAP_KEY)
547
548/* if OBJ_IS_YANGMAP_SOURCE : yangmap_cb == nodemap_t
549 * if OBJ_IS_YANGMAP_TARGET : yangmap_cb == nodemap_t
550 * if OBJ_IS_YANGMAP_CHILD : yangmap_cb == childmap_t
551 * if OBJ_IS_YANGMAP_KEY : yangmap_cb == keymap_t
552 */
553#define OBJ_YANGMAP_CB(OBJ) (OBJ)->yangmap_cb
554
555/* Object DUP_LOCAL test has been done */
556#define OBJ_SET_DUP_LOCAL_DONE(OBJ) \
557 (OBJ)->xflags |= OBJ_FL_DUP_LOCAL_DONE
558
559#define OBJ_IS_DUP_LOCAL_DONE(OBJ) \
560 ((OBJ)->xflags & OBJ_FL_DUP_LOCAL_DONE)
561
562
563#define OBJ_RPC_SUPPORTED(OBJ) (OBJ)->def.rpc->supported
564
565
566/* Trans Hook assignment bits */
567#define OBJ_SET_TRANS_HOOK_SET(OBJ) (OBJ)->xflags |= OBJ_FL_TRANS_HOOK_SET
568#define OBJ_IS_TRANS_HOOK_SET(OBJ) ((OBJ)->xflags & OBJ_FL_TRANS_HOOK_SET)
569#define OBJ_CLEAR_TRANS_HOOK_SET(OBJ) (OBJ)->xflags &= ~OBJ_FL_TRANS_HOOK_SET
570
571
572/* All in One assignment bits */
573#define OBJ_SET_AIO_GET2(OBJ) (OBJ)->xflags2 |= OBJ_FL_AIO_GET2
574#define OBJ_IS_AIO_GET2(OBJ) ((OBJ)->xflags2 & OBJ_FL_AIO_GET2)
575#define OBJ_CLEAR_AIO_GET2(OBJ) (OBJ)->xflags2 &= ~ OBJ_FL_AIO_GET2
576
577/* GET2 object but not All in One object, but a parent of AIO */
578#define OBJ_SET_AIO_PARENT(OBJ) (OBJ)->xflags2 |= OBJ_FL_AIO_PARENT
579#define OBJ_IS_AIO_PARENT(OBJ) ((OBJ)->xflags2 & OBJ_FL_AIO_PARENT)
580#define OBJ_CLEAR_AIO_PARENT(OBJ) (OBJ)->xflags2 &= ~ OBJ_FL_AIO_PARENT
581
582/* AIO with XML/JSON support flags*/
583#define OBJ_SET_AIO_GET2_XML(OBJ) (OBJ)->xflags2 |= OBJ_FL_AIO_GET2_XML
584#define OBJ_IS_AIO_GET2_XML(OBJ) ((OBJ)->xflags2 & OBJ_FL_AIO_GET2_XML)
585
586#define OBJ_SET_AIO_GET2_JSON(OBJ) (OBJ)->xflags2 |= OBJ_FL_AIO_GET2_JSON
587#define OBJ_IS_AIO_GET2_JSON(OBJ) ((OBJ)->xflags2 & OBJ_FL_AIO_GET2_JSON)
588
589/* Dynamic Default Hook assignment bits */
590#define OBJ_SET_DEF_HOOK(OBJ) (OBJ)->xflags2 |= OBJ_FL_DEF_HOOK
591#define OBJ_IS_DEF_HOOK(OBJ) ((OBJ)->xflags2 & OBJ_FL_DEF_HOOK)
592#define OBJ_CLEAR_DEF_HOOK(OBJ) (OBJ)->xflags2 &= ~OBJ_FL_DEF_HOOK
593#define OBJ_GET_DEF_HOOK_CB(OBJ) (ncx_def_hook_cbfn_t)(OBJ)->def_hook_cb
594
595/* openconfig-hashed-value bit */
596#define OBJ_SET_OC_HASHED_VALUE(OBJ) (OBJ)->xflags2 |= OBJ_FL_OC_HASHED_VALUE
597#define OBJ_IS_OC_HASHED_VALUE(OBJ) ((OBJ)->xflags2 & OBJ_FL_OC_HASHED_VALUE)
598
599/* Static Ban Nock GET assignment bits */
600#define OBJ_SET_BAN_NOLOCK_GET(OBJ) (OBJ)->xflags2 |= OBJ_FL_BAN_NOLOCK_GET
601#define OBJ_IS_BAN_NOLOCK_GET(OBJ) ((OBJ)->xflags2 & OBJ_FL_BAN_NOLOCK_GET)
602
603
604/* Mount Point bit */
605#define OBJ_SET_MOUNT_POINT(OBJ) (OBJ)->xflags2 |= OBJ_FL_MOUNT_POINT
606#define OBJ_IS_MOUNT_POINT(OBJ) ((OBJ)->xflags2 & OBJ_FL_MOUNT_POINT)
607
608/* Mount Point Support Utility functions */
609#define OBJ_SET_ROOTCB(OBJ, ROOTCB) (OBJ)->rootcb = ROOTCB
610#define OBJ_GET_ROOTCB(OBJ) (OBJ)->rootcb
611
612/* Mount Point Descendant bit */
613#define OBJ_SET_DESC_MOUNT_POINT(OBJ) (OBJ)->xflags2 |= OBJ_FL_DESC_MOUNT_POINT
614#define OBJ_IS_DESC_MOUNT_POINT(OBJ) ((OBJ)->xflags2 & OBJ_FL_DESC_MOUNT_POINT)
615
617#define OBJ_BOOL_EVAL_CB(OBJ) (OBJ)->bool_eval_cb
618
619/********************************************************************
620* *
621* T Y P E S *
622* *
623*********************************************************************/
624
625// Header Only
648typedef enum obj_type_t_ {
653
659
662
665
668
674
690
698
709
718
719
735
738
746
747
748#define OBJ_TYP_LAST OBJ_TYP_ACTION
749
755typedef uint16 obj_index_t;
756
757
759typedef enum obj_augtype_t_ {
766
767
769typedef struct obj_key_t_ {
770 dlq_hdr_t qhdr;
771 struct obj_template_t_ *keyobj;
772 boolean seen;
773} YPACK obj_key_t;
774
775
777typedef struct obj_defval_tk_t_ {
778 dlq_hdr_t qhdr;
779 xmlChar *def;
781} YPACK obj_defval_tk_t;
782
783
785typedef struct obj_unique_comp_t_ {
786 dlq_hdr_t qhdr;
787 struct obj_template_t_ *unobj;
788 xmlChar *xpath;
789 boolean isduplicate;
790} YPACK obj_unique_comp_t;
791
792
794typedef struct obj_unique_t_ {
795 dlq_hdr_t qhdr;
796 xmlChar *xpath;
797 dlq_hdr_t compQ;
798 boolean seen;
799 boolean isconfig;
801} YPACK obj_unique_t;
802
803
805typedef struct obj_container_t_ {
807 xmlChar *name;
808
810 xmlChar *descr;
811
813 xmlChar *ref;
814
816 xmlChar *presence;
817 dlq_hdr_t *typedefQ;
818 dlq_hdr_t *groupingQ;
819 dlq_hdr_t *datadefQ;
821 dlq_hdr_t mustQ;
822 struct obj_template_t_ *defaultparm;
823 obj_index_t last_index;
824} YPACK obj_container_t;
825
826
828typedef struct obj_leaf_t_ {
830 xmlChar *name;
831
833 xmlChar *units;
834
836 xmlChar *defval;
837
839 xmlChar *descr;
840
842 xmlChar *ref;
843
846
849
851 uint16 keynum;
852
853 dlq_hdr_t mustQ;
856 dlq_hdr_t leafrefQ;
859 struct obj_template_t_ *leafrefobj;
860} YPACK obj_leaf_t;
861
862
864typedef struct obj_leaflist_t_ {
866 xmlChar *name;
867
869 xmlChar *units;
870
872 xmlChar *descr;
873
875 xmlChar *ref;
876
879
881 boolean defset;
882 boolean ordersys;
883 boolean minset;
884 uint32 minelems;
885 boolean maxset;
886 uint32 maxelems;
888 dlq_hdr_t mustQ;
889 dlq_hdr_t leafrefQ;
890 dlq_hdr_t defvalQ;
893 struct obj_template_t_ *leafrefobj;
894} YPACK obj_leaflist_t;
895
896
898typedef struct obj_list_t_ {
900 xmlChar *name;
901
903 xmlChar *keystr;
904
906 xmlChar *descr;
907
909 xmlChar *ref;
910 dlq_hdr_t *typedefQ;
911 dlq_hdr_t *groupingQ;
912 dlq_hdr_t *datadefQ;
913 dlq_hdr_t keyQ;
914 dlq_hdr_t uniqueQ;
915 boolean ordersys;
916 boolean minset;
917 uint32 minelems;
918 boolean maxset;
919 uint32 maxelems;
921 dlq_hdr_t mustQ;
925
928} YPACK obj_list_t;
929
930
932typedef struct obj_choice_t_ {
933 xmlChar *name;
934 xmlChar *defval;
937 xmlChar *descr;
938
940 xmlChar *ref;
941 dlq_hdr_t *caseQ;
942 boolean caseQclone;
944} YPACK obj_choice_t;
945
946
948typedef struct obj_case_t_ {
949 xmlChar *name;
952 xmlChar *descr;
953
955 xmlChar *ref;
956
957 dlq_hdr_t *datadefQ;
961 boolean nameclone;
963} YPACK obj_case_t;
964
965
967typedef struct obj_uses_t_ {
968 xmlChar *prefix;
969 xmlChar *name;
972 xmlChar *descr;
973
975 xmlChar *ref;
977 dlq_hdr_t *datadefQ;
979 boolean expand_done;
980} YPACK obj_uses_t;
981
982
984typedef struct obj_refine_t_ {
986 xmlChar *target;
987
989 struct obj_template_t_ *targobj;
990
992 xmlChar *descr;
993
1001
1003 xmlChar *ref;
1004
1007
1009 xmlChar *presence;
1010
1013
1014 dlq_hdr_t defval_tkQ;
1018
1021 uint32 minelems;
1023 uint32 maxelems;
1025 dlq_hdr_t mustQ;
1026} YPACK obj_refine_t;
1027
1028
1030typedef struct obj_rpcio_t_ {
1031 xmlChar *name;
1032 dlq_hdr_t *typedefQ;
1033 dlq_hdr_t *groupingQ;
1034 dlq_hdr_t datadefQ;
1035 dlq_hdr_t mustQ;
1040 boolean is_input;
1041
1045 struct obj_template_t_ *defaultparm;
1046} YPACK obj_rpcio_t;
1047
1048
1050typedef struct obj_rpc_t_ {
1052 xmlChar *name;
1053
1055 xmlChar *descr;
1056
1058 xmlChar *ref;
1059
1061 dlq_hdr_t *typedefQ;
1062 dlq_hdr_t *groupingQ;
1063 dlq_hdr_t datadefQ;
1064 boolean is_action;
1068 boolean supported;
1069} YPACK obj_rpc_t;
1070
1071
1073typedef struct obj_augment_t_ {
1075 xmlChar *target;
1076
1078 xmlChar *descr;
1079
1081 xmlChar *ref;
1082
1084 struct obj_template_t_ *targobj;
1085
1089 dlq_hdr_t datadefQ;
1090 uint16 depth;
1091} YPACK obj_augment_t;
1092
1093
1095typedef struct obj_notif_t_ {
1097 xmlChar *name;
1098
1100 xmlChar *descr;
1101
1103 xmlChar *ref;
1105 dlq_hdr_t *typedefQ;
1106 dlq_hdr_t *groupingQ;
1107 dlq_hdr_t datadefQ;
1108 dlq_hdr_t mustQ;
1111 boolean in_data;
1112} YPACK obj_notif_t;
1113
1114
1116typedef struct obj_iffeature_ptr_t_ {
1117 dlq_hdr_t qhdr;
1119} YPACK obj_iffeature_ptr_t;
1120
1121
1123typedef struct obj_errmsg_filter_t_ {
1124 dlq_hdr_t qhdr;
1125 xmlChar *matchstr;
1126 boolean is_errortag;
1127} YPACK obj_errmsg_filter_t;
1128
1129
1131typedef struct obj_errmsg_parm_t_ {
1132 dlq_hdr_t qhdr;
1133 xmlChar *path;
1136 uint32 len;
1137
1139 xmlChar *valstr;
1140} YPACK obj_errmsg_parm_t;
1141
1142
1144typedef struct obj_errmsg_t_ {
1145 dlq_hdr_t qhdr;
1146 xmlChar *basestr;
1147 xmlChar *langstr;
1148 dlq_hdr_t parmQ;
1149 dlq_hdr_t filterQ;
1150} YPACK obj_errmsg_t;
1151
1152
1154typedef unsigned long oid_t;
1155
1162typedef struct obj_oid_t_ {
1163 uint8 cnt;
1165} YPACK obj_oid_t;
1166
1167
1169typedef uint8 obj_testflags_t;
1170
1171
1176typedef struct obj_template_t_ {
1177 dlq_hdr_t qhdr;
1180 uint32 yang_hash;
1182 uint32 flags;
1183 uint32 xflags;
1184 uint32 xflags2;
1186 uint32 uflags;
1187 uint8 silflags;
1199 struct obj_template_t_ *parent;
1200 struct obj_template_t_ *usesobj;
1201 struct obj_template_t_ *augobj;
1203 struct xpath_pcb_t_ *when;
1204 dlq_hdr_t metadataQ;
1205 dlq_hdr_t appinfoQ;
1206 dlq_hdr_t iffeatureQ;
1212
1214 dlq_hdr_t *dataruleQ;
1215
1223 void *cbset;
1224
1226 void *get2cb;
1227
1235 struct ncx_module_t_ *mod;
1236
1239
1241 struct xpath_pcb_t_ *xpath_backptr[OBJ_NUM_XPATH_BACKPTRS];
1242
1244 dlq_hdr_t xpath_backptrQ; // backptr to xpath_pcb_t
1245
1251
1253 dlq_hdr_t *errmsgQ; // Q of obj_errmsg_t
1254
1260
1263
1266
1269
1272
1274 union def_ {
1275 obj_container_t *container;
1276 obj_leaf_t *leaf;
1277 obj_leaflist_t *leaflist;
1278 obj_list_t *list;
1279 obj_choice_t *choic;
1280 obj_case_t *cas;
1281 obj_uses_t *uses;
1282 obj_refine_t *refine;
1283 obj_augment_t *augment;
1284 obj_rpc_t *rpc;
1285 obj_rpcio_t *rpcio;
1286 obj_notif_t *notif;
1287 } def;
1288
1293
1294
1300 void *bool_eval_cb; // xpath_bool_eval_fn_t
1301
1304
1310
1313
1314} YPACK obj_template_t;
1315
1316
1318typedef struct obj_metadata_t_ {
1319 dlq_hdr_t qhdr;
1320 struct obj_template_t_ *parent;
1321 xmlChar *name;
1325 boolean typdef_copy;
1326} YPACK obj_metadata_t;
1327
1328
1330typedef enum obj_deviate_arg_t_ {
1337
1338
1340typedef struct obj_deviate_t_ {
1341 dlq_hdr_t qhdr;
1350
1352 boolean empty;
1353
1356
1359
1362
1365
1367 xmlChar *units;
1368
1371
1373 dlq_hdr_t defval_tkQ;
1374
1376 boolean config;
1377
1380
1382 boolean mandatory;
1383
1386
1388 uint32 minelems;
1392 uint32 maxelems;
1394 dlq_hdr_t mustQ;
1395 dlq_hdr_t uniqueQ;
1396 dlq_hdr_t appinfoQ;
1397} YPACK obj_deviate_t;
1398
1399
1401typedef struct obj_deviation_t_ {
1402 dlq_hdr_t qhdr;
1403 xmlChar *target;
1404 xmlChar *targmodname;
1408 xmlChar *descr;
1409
1411 xmlChar *ref;
1412
1415 xmlChar *devmodname;
1416 boolean empty;
1417 boolean annotation;
1419 dlq_hdr_t deviateQ;
1420 dlq_hdr_t appinfoQ;
1421} YPACK obj_deviation_t;
1422
1423
1434typedef boolean
1436 void *cookie1,
1437 void *cookie2,
1438 boolean nonconfig_warn);
1439
1440
1441#define OBJ_SET_TESTFLAGS(OBJ, FL) (OBJ)->testflags = FL
1442
1443#define OBJ_GET_TESTFLAGS(OBJ) (OBJ)->testflags
1444
1445#define OBJ_SET_DESC_TESTFLAGS(OBJ, FL) (OBJ)->desc_testflags = FL
1446
1447#define OBJ_GET_DESC_TESTFLAGS(OBJ) (OBJ)->desc_testflags
1448
1449#define OBJ_UPDATE_DESC_TESTFLAGS(OBJ, FL) (OBJ)->desc_testflags |= FL
1450
1453/********************************************************************
1454* *
1455* F U N C T I O N S *
1456* *
1457*********************************************************************/
1458
1475extern obj_template_t *
1476 obj_new_template (obj_type_t objtype);
1477
1478
1488extern void
1490
1491
1504extern obj_template_t *
1505 obj_find_template (dlq_hdr_t *que,
1506 const xmlChar *modname,
1507 const xmlChar *objname);
1508
1509
1521extern obj_template_t *
1522 obj_find_schema_template ( dlq_hdr_t *que,
1523 const xmlChar *modname,
1524 const xmlChar *objname );
1525
1526
1538extern const obj_template_t *
1539 obj_find_template_con (dlq_hdr_t *que,
1540 const xmlChar *modname,
1541 const xmlChar *objname);
1542
1543
1555extern obj_template_t *
1556 obj_find_template_test (dlq_hdr_t *que,
1557 const xmlChar *modname,
1558 const xmlChar *objname);
1559
1560
1574extern obj_template_t *
1576 const xmlChar *modname,
1577 const xmlChar *objname);
1578
1579
1595extern obj_template_t *
1597 const xmlChar *modname,
1598 const xmlChar *objname);
1599
1600
1622extern obj_template_t *
1624 const xmlChar *modname,
1625 const xmlChar *objname,
1626 ncx_name_match_t match_names,
1627 boolean alt_names,
1628 boolean dataonly,
1629 status_t *retres);
1630
1631
1645extern obj_template_t *
1647 const xmlChar *modname,
1648 const xmlChar *objname);
1649
1650
1667extern obj_template_t *
1669 const xmlChar *modname,
1670 const xmlChar *objname);
1671
1672
1689extern obj_template_t *
1691 const xmlChar *modname,
1692 const xmlChar *objname);
1693
1694
1711extern obj_template_t *
1713 const xmlChar *modname,
1714 const xmlChar *objname);
1715
1716
1731extern obj_template_t *
1733 xmlns_id_t nsid,
1734 const xmlChar *objname);
1735
1736
1761extern obj_template_t *
1763 const xmlChar *modname,
1764 const xmlChar *objname,
1765 ncx_name_match_t match_names,
1766 boolean alt_names,
1767 boolean dataonly,
1768 status_t *retres);
1769
1770
1781extern obj_template_t *
1783 const xmlChar *modname,
1784 const xmlChar *objname,
1785 uint32 objnamelen);
1786
1787
1809extern obj_template_t *
1811 const xmlChar *modname,
1812 const xmlChar *objname,
1813 uint32 objnamelen,
1814 uint32 *matchcount);
1815
1816
1827extern obj_template_t *
1829
1830
1841extern obj_template_t *
1843
1844
1855extern obj_template_t *
1857
1858
1869extern obj_template_t *
1871
1872
1883extern obj_template_t *
1885
1886
1897extern obj_template_t *
1899
1900
1911extern obj_template_t *
1913
1914
1925extern obj_template_t *
1927
1928
1939extern obj_template_t *
1941
1942
1953extern obj_template_t *
1955
1956
1968extern obj_template_t *
1970
1971
1983extern obj_template_t *
1985
1986
2003extern obj_template_t *
2005 boolean stopnext);
2006
2007
2043extern boolean
2045 obj_walker_fn_t walkerfn,
2046 void *cookie1,
2047 void *cookie2,
2048 obj_template_t *startnode,
2049 const xmlChar *modname,
2050 const xmlChar *childname,
2051 boolean configonly,
2052 boolean textmode,
2053 boolean useroot);
2054
2055
2095extern boolean
2097 obj_walker_fn_t walkerfn,
2098 void *cookie1,
2099 void *cookie2,
2100 obj_template_t *startnode,
2101 const xmlChar *modname,
2102 const xmlChar *name,
2103 boolean configonly,
2104 boolean textmode,
2105 boolean useroot,
2106 boolean orself,
2107 boolean *fncalled);
2108
2109
2149extern boolean
2151 obj_walker_fn_t walkerfn,
2152 void *cookie1,
2153 void *cookie2,
2154 obj_template_t *startnode,
2155 const xmlChar *modname,
2156 const xmlChar *name,
2157 boolean configonly,
2158 boolean textmode,
2159 boolean useroot,
2160 boolean orself,
2161 boolean *fncalled);
2162
2163
2206extern boolean
2208 obj_walker_fn_t walkerfn,
2209 void *cookie1,
2210 void *cookie2,
2211 obj_template_t *startnode,
2212 const xmlChar *modname,
2213 const xmlChar *name,
2214 boolean configonly,
2215 boolean dblslash,
2216 boolean textmode,
2217 boolean useroot,
2218 ncx_xpath_axis_t axis,
2219 boolean *fncalled);
2220
2221
2230extern obj_case_t *
2232 const xmlChar *modname,
2233 const xmlChar *casname);
2234
2235
2236
2247extern obj_template_t *
2249 const xmlChar *name);
2250
2251
2257extern void
2258 obj_clean_datadefQ (dlq_hdr_t *que);
2259
2260
2268extern typ_template_t *
2270 const xmlChar *typname);
2271
2272
2279extern typ_template_t *
2281
2282
2290extern grp_template_t *
2292 const xmlChar *grpname);
2293
2300extern grp_template_t *
2302
2303
2319extern status_t
2320 obj_set_named_type (void *pcb, // yang_pcb_t
2321 tk_chain_t *tkc,
2322 ncx_module_t *mod,
2323 const xmlChar *typname,
2324 typ_def_t *typdef,
2325 obj_template_t *parent,
2326 grp_template_t *grp);
2327
2328
2351extern obj_template_t *
2353 obj_template_t *srcobj,
2354 dlq_hdr_t *mobjQ);
2355
2356
2381extern obj_template_t *
2383 obj_template_t *srcobj,
2384 dlq_hdr_t *mobjQ,
2385 boolean sm_clone);
2386
2387
2412extern obj_template_t *
2414 obj_template_t *srcobj,
2415 dlq_hdr_t *mobjQ);
2416
2417
2418/******************** obj_unique_t ********************/
2419
2420
2426extern obj_unique_t *
2427 obj_new_unique (void);
2428
2429
2435extern void
2437
2438
2444extern void
2446
2447
2453extern void
2455
2456
2462extern obj_unique_comp_t *
2463 obj_new_unique_comp (void);
2464
2465
2471extern void
2473
2474
2483extern obj_unique_t *
2484 obj_find_unique (dlq_hdr_t *que,
2485 const xmlChar *xpath);
2486
2487
2494extern obj_unique_t *
2496
2497
2504extern obj_unique_t *
2506
2507
2514extern obj_unique_comp_t *
2516
2517
2524extern obj_unique_comp_t *
2526
2527
2533extern obj_key_t *
2534 obj_new_key (void);
2535
2536
2542extern void
2543 obj_free_key (obj_key_t *key);
2544
2545
2553extern obj_key_t *
2554 obj_find_key (dlq_hdr_t *que,
2555 const xmlChar *keycompname);
2556
2557
2566extern obj_key_t *
2567 obj_find_key2 (dlq_hdr_t *que,
2568 obj_template_t *keyobj);
2569
2570
2577extern obj_key_t *
2579
2580
2587extern obj_key_t *
2589
2590
2597extern const obj_key_t *
2598 obj_first_ckey (const obj_template_t *obj);
2599
2600
2607extern obj_key_t *
2608 obj_next_key (obj_key_t *objkey);
2609
2610
2617extern obj_key_t *
2618 obj_prev_key (obj_key_t *objkey);
2619
2620
2627extern const obj_key_t *
2628 obj_next_ckey (const obj_key_t *objkey);
2629
2630
2637extern uint32
2638 obj_key_count (const obj_template_t *obj);
2639
2640
2648extern uint32
2650
2651
2665extern void
2667 void *cookie1,
2668 void *cookie2,
2669 obj_walker_fn_t walkerfn);
2670
2671
2678extern boolean
2679 obj_any_rpcs (const dlq_hdr_t *datadefQ);
2680
2681
2688extern boolean
2689 obj_any_notifs (const dlq_hdr_t *datadefQ);
2690
2691
2697extern obj_deviate_t *
2698 obj_new_deviate (void);
2699
2700
2706extern void
2708
2709
2716extern const xmlChar *
2718
2719
2725extern obj_deviation_t *
2726 obj_new_deviation (void);
2727
2728
2734extern void
2736
2737
2743extern void
2744 obj_clean_deviationQ (dlq_hdr_t *deviationQ);
2745
2746
2755extern status_t
2757 xmlChar **buff);
2758
2759
2769extern status_t
2770 obj_gen_object_id_prefix (const obj_template_t *obj, xmlChar **buff);
2771
2772
2773
2784extern status_t
2786 xmlChar **buff);
2787
2788
2799extern status_t
2801 const obj_template_t *obj,
2802 xmlChar **buff);
2803
2804
2817extern status_t
2819 xmlChar **buff);
2820
2821
2831 xmlChar **buff);
2832
2833
2844 const obj_template_t *stopobj,
2845 xmlChar **buff);
2846
2847
2860extern status_t
2862 const obj_template_t *obj,
2863 xmlChar **buff);
2864
2865
2881extern status_t
2883 xmlChar *buff,
2884 uint32 bufflen,
2885 uint32 *reallen);
2886
2887
2901extern status_t
2903 xmlChar *buff,
2904 uint32 bufflen,
2905 uint32 *reallen);
2906
2907
2908
2909
2919extern status_t
2921 xmlChar **buff);
2922
2923
2934extern status_t
2936 xmlChar **buff);
2937
2938
2945extern const xmlChar *
2946 obj_get_name (const obj_template_t *obj);
2947
2948
2956extern status_t
2958 const xmlChar *objname);
2959
2960
2973extern boolean
2974 obj_has_name (const obj_template_t *obj);
2975
2976
2985extern boolean
2987
2988
2995extern ncx_status_t
2996 obj_get_status (const obj_template_t *obj);
2997
2998
3005extern const xmlChar *
3007
3008
3018extern const xmlChar *
3020
3021
3029extern const xmlChar *
3031
3032
3040extern const xmlChar *
3042
3043
3050extern const void *
3052
3053
3060extern const xmlChar *
3061 obj_get_reference (const obj_template_t *obj);
3062
3063
3071extern const void *
3073
3074
3075#define obj_is_config obj_get_config_flag_deep
3076
3077
3087extern boolean
3089
3090
3104extern boolean
3106 boolean *setflag);
3107
3108
3116extern ncx_access_t
3118
3119
3126extern dlq_hdr_t *
3128
3129
3136extern dlq_hdr_t *
3137 obj_get_mustQ (const obj_template_t *obj);
3138
3139
3146extern dlq_hdr_t *
3147 obj_get_leafrefQ (const obj_template_t *obj);
3148
3149
3159extern const xmlChar *
3160 obj_get_typestr (const obj_template_t *obj);
3161
3162
3169extern dlq_hdr_t *
3171
3172
3179extern const dlq_hdr_t *
3180 obj_get_cdatadefQ (const obj_template_t *obj);
3181
3182
3193extern const xmlChar *
3194 obj_get_default (const obj_template_t *obj);
3195
3196
3205extern const xmlChar *
3207 ncx_backptr_t **thisdef);
3208
3209
3222extern const xmlChar *
3224 ncx_backptr_t *lastdef,
3225 ncx_backptr_t **thisdef);
3226
3227
3234extern obj_template_t *
3236
3237
3247extern boolean
3249
3250
3260extern boolean
3262
3263
3272extern uint32
3273 obj_get_level (const obj_template_t *obj);
3274
3275
3291extern uint32
3292 obj_get_level_mp (const obj_template_t *obj);
3293
3294
3304extern uint32
3306
3307
3317extern boolean
3318 obj_has_typedefs (const obj_template_t *obj);
3319
3320
3328extern typ_def_t *
3330
3331
3339extern typ_def_t *
3341
3342
3350extern const typ_def_t *
3351 obj_get_ctypdef (const obj_template_t *obj);
3352
3353
3360extern ncx_btype_t
3361 obj_get_basetype (const obj_template_t *obj);
3362
3363
3370extern const xmlChar *
3372
3373
3380extern const xmlChar *
3382
3383
3390extern const xmlChar *
3391 obj_get_mod_name (const obj_template_t *obj);
3392
3393
3400extern ncx_module_t *
3402
3403
3410extern boolean
3412
3413
3421extern ncx_module_t *
3423
3424
3431extern const xmlChar *
3433
3434
3441extern const xmlChar *
3442 obj_get_type_name (const obj_template_t *obj);
3443
3444
3451extern xmlns_id_t
3452 obj_get_nsid (const obj_template_t *obj);
3453
3454
3461extern ncx_sid_t
3462 obj_get_yang_sid (const obj_template_t *obj);
3463
3464
3471extern uint32
3473
3480extern ncx_iqual_t
3482
3483
3491extern ncx_iqual_t
3493 boolean required);
3494
3495
3504extern boolean
3506 uint32 *minelems);
3507
3508
3517extern boolean
3519 uint32 *maxelems);
3520
3521
3528extern const xmlChar *
3530
3531
3538extern obj_template_t *
3540
3541
3549extern const obj_template_t *
3550 obj_get_cparent (const obj_template_t *obj);
3551
3552
3560extern obj_template_t *
3562
3563
3573extern const obj_template_t *
3575
3576
3583extern const xmlChar *
3585
3586
3594extern void *
3596
3597
3624extern status_t
3626 obj_template_t *chobj,
3627 const xml_node_t *curnode,
3628 boolean xmlorder,
3629 dlq_hdr_t *force_modQ,
3630 obj_template_t **rettop,
3631 obj_template_t **retobj);
3632
3633
3640extern uint32
3642
3643
3651extern obj_template_t *
3653
3654
3669extern boolean
3671
3672
3687extern boolean
3689 boolean *ingrp);
3690
3691
3699extern uint8
3701
3702
3710extern const ncx_iffeature_t *
3712
3713
3721extern const ncx_iffeature_t *
3722 obj_get_next_iffeature (const ncx_iffeature_t *iffeature);
3723
3724
3731extern boolean
3732 obj_is_anyxml (const obj_template_t *obj);
3733
3734
3741extern boolean
3742 obj_is_anydata (const obj_template_t *obj);
3743
3744
3752extern boolean
3753 obj_is_any (const obj_template_t *obj);
3754
3755
3762extern boolean
3763 obj_is_leaf (const obj_template_t *obj);
3764
3765
3772extern boolean
3773 obj_is_leaf_list (const obj_template_t *obj);
3774
3775
3782extern boolean
3783 obj_is_list (const obj_template_t *obj);
3784
3785
3792extern boolean obj_in_list (const obj_template_t *obj);
3793
3794
3801extern boolean
3802 obj_is_container (const obj_template_t *obj);
3803
3804
3811extern boolean
3812 obj_is_choice (const obj_template_t *obj);
3813
3814
3821extern boolean
3822 obj_is_case (const obj_template_t *obj);
3823
3824
3831extern boolean
3832 obj_is_uses (const obj_template_t *obj);
3833
3834
3841extern boolean
3842 obj_is_leafy (const obj_template_t *obj);
3843
3844
3851extern boolean obj_is_terminal (const obj_template_t *obj);
3852
3853
3861extern boolean
3863
3864
3875extern boolean
3877 boolean config_only);
3878
3879
3888extern boolean
3890
3891
3900extern boolean
3901 obj_is_cloned (const obj_template_t *obj);
3902
3903
3912extern boolean
3913 obj_is_augclone (const obj_template_t *obj);
3914
3915
3923extern boolean
3924 obj_is_augment (const obj_template_t *obj);
3925
3926
3934extern boolean obj_in_augment (const obj_template_t *obj);
3935
3936
3944extern boolean
3945 obj_is_refine (const obj_template_t *obj);
3946
3947
3956extern boolean
3957 obj_is_data (const obj_template_t *obj);
3958
3959
3969extern boolean
3970 obj_is_data_db (const obj_template_t *obj);
3971
3972
3980extern boolean
3981 obj_is_data_node (const obj_template_t *obj);
3982
3983
3991extern boolean
3992 obj_in_rpc (const obj_template_t *obj);
3993
3994
4001extern boolean
4002 obj_in_rpc_reply (const obj_template_t *obj);
4003
4004
4011extern boolean
4012 obj_in_notif (const obj_template_t *obj);
4013
4014
4021extern boolean
4022 obj_is_rpc (const obj_template_t *obj);
4023
4024
4031extern boolean
4032 obj_is_sm_rpc (const obj_template_t *obj);
4033
4034
4041extern boolean obj_is_rpcio (const obj_template_t *obj);
4042
4043
4050extern boolean obj_is_rpcio_input (const obj_template_t *obj);
4051
4052
4059extern boolean
4060 obj_is_action (const obj_template_t *obj);
4061
4062
4069extern boolean obj_in_action (const obj_template_t *obj);
4070
4071
4078extern boolean
4079 obj_is_notif (const obj_template_t *obj);
4080
4081
4088extern boolean
4089 obj_is_sm_notif (const obj_template_t *obj);
4090
4091
4104extern boolean
4105 obj_is_empty (const obj_template_t *obj);
4106
4107
4115extern boolean
4116 obj_is_match (const obj_template_t *obj1,
4117 const obj_template_t *obj2);
4118
4119
4126extern boolean
4127 obj_is_hidden (const obj_template_t *obj);
4128
4129
4136extern boolean
4137 obj_is_root (const obj_template_t *obj);
4138
4139
4145extern void
4147
4148
4155extern boolean
4156 obj_is_rpc_root (const obj_template_t *obj);
4157
4158
4165extern boolean
4166 obj_is_password (const obj_template_t *obj);
4167
4168
4175extern boolean
4176 obj_is_xsdlist (const obj_template_t *obj);
4177
4178
4185extern boolean
4186 obj_is_cli (const obj_template_t *obj);
4187
4188
4197extern boolean obj_is_dirty (const obj_template_t *obj,
4198 ncx_cfg_t cfgid);
4199
4200
4207extern boolean
4208 obj_is_key (const obj_template_t *obj);
4209
4210
4217extern boolean
4218 obj_is_abstract (const obj_template_t *obj);
4219
4220
4228extern boolean obj_in_abstract (const obj_template_t *obj);
4229
4230
4237extern boolean
4238 obj_is_deleted (const obj_template_t *obj);
4239
4240
4249extern boolean
4250 obj_is_deleted_ex (const obj_template_t *obj);
4251
4252
4259extern boolean
4261
4262
4270extern boolean
4272
4273
4280extern boolean
4281 obj_is_secure (const obj_template_t *obj);
4282
4283
4291extern boolean
4293
4294
4302extern boolean
4304
4305
4313extern boolean
4315
4316
4324extern boolean
4326
4327
4336extern boolean
4338
4339
4346extern boolean
4348
4349
4359extern boolean
4361
4362
4370extern boolean
4372
4373
4382extern boolean
4383 obj_is_top (const obj_template_t *obj);
4384
4385
4392extern boolean
4393 obj_is_datapath (const obj_template_t *obj);
4394
4395
4407extern boolean
4409
4410
4418extern boolean
4420
4421
4430extern boolean
4432
4433
4441extern boolean obj_has_ro_descendants (obj_template_t *obj);
4442
4443
4451extern boolean obj_has_rw_children (obj_template_t *obj);
4452
4453
4463extern boolean obj_has_rw_children_ex (obj_template_t *obj,
4464 boolean term_only);
4465
4466
4473extern boolean
4475
4476
4483extern boolean
4485
4486
4495extern boolean
4497
4498
4504extern obj_metadata_t *
4505 obj_new_metadata (void);
4506
4507
4517extern void
4519
4520
4528extern status_t
4530 obj_template_t *obj);
4531
4532
4540extern obj_metadata_t *
4542 const xmlChar *name);
4543
4544
4551extern obj_metadata_t *
4553
4554
4561extern obj_metadata_t *
4562 obj_next_metadata (const obj_metadata_t *meta);
4563
4564
4575extern void
4577
4578
4585extern void
4587
4588
4596extern uint32
4598
4599
4609extern void
4611 dlq_hdr_t *datadefQ,
4612 uint32 startindent,
4613 uint32 indent);
4614
4615
4622extern const xmlChar *
4624
4625
4631extern void
4632 obj_delete_obsolete (dlq_hdr_t *objQ);
4633
4634
4641extern const xmlChar *
4642 obj_get_altname (const obj_template_t *obj);
4643
4644
4652extern obj_template_t *
4654
4655
4663extern obj_template_t *
4665
4666
4674extern const xmlChar *
4676
4677
4684extern boolean
4686
4687
4694extern boolean
4696
4697
4705extern boolean
4707
4708
4716extern boolean
4718
4719
4727extern boolean
4729
4730
4739extern boolean
4741
4742
4749extern void
4751
4752
4761extern boolean
4763
4764
4773extern boolean
4775
4776
4785extern boolean
4787
4788
4795extern obj_iffeature_ptr_t *
4797
4798
4804extern void obj_free_iffeature_ptr (obj_iffeature_ptr_t *iffptr);
4805
4806
4813extern obj_iffeature_ptr_t *
4815
4816
4823extern obj_iffeature_ptr_t *
4825
4826
4833extern ncx_backptr_t *
4835
4836
4843extern ncx_backptr_t *
4845
4846
4854extern boolean
4856 struct xpath_pcb_t_ *xpath);
4857
4858
4866extern struct xpath_pcb_t_ *
4868 struct xpath_pcb_t_ *xpath);
4869
4870
4877extern struct xpath_pcb_t_ *
4879
4880
4881
4892extern status_t
4894 struct xpath_pcb_t_ *xpath);
4895
4896
4906extern void
4908 struct xpath_pcb_t_ *xpath);
4909
4910
4919extern status_t
4921
4922
4931extern void
4933 ncx_cfg_t cfg_id,
4934 boolean flag);
4935
4936
4952extern boolean
4954
4955
4976extern boolean
4978
4979
4987extern boolean
4989
4990
5003extern void
5005 ncx_module_t *mod);
5006
5007
5014extern void
5016
5017
5026extern boolean
5028
5029
5036extern void
5038 uint16 keynum);
5039
5040
5047extern uint16
5049
5050
5058extern boolean
5060
5061
5068extern boolean
5070
5071
5078extern boolean
5080
5081
5088extern void
5090
5091
5098extern boolean obj_notif_enabled (const obj_template_t *obj);
5099
5100
5107extern boolean obj_notif_log_drops (const obj_template_t *obj);
5108
5109
5116extern void obj_set_notif_enabled (obj_template_t *obj,
5117 boolean enabled);
5118
5119
5126extern void obj_set_notif_log_drops (const obj_template_t *obj,
5127 boolean enabled);
5128
5129
5137extern boolean
5138 obj_unload_active (const obj_template_t *obj);
5139
5140
5147extern boolean
5148 obj_is_obsolete (const obj_template_t *obj);
5149
5150
5158extern boolean
5160
5161
5168extern void
5170 uint8 prio);
5171
5172
5179extern uint8
5181
5182
5190extern boolean
5192
5193
5202
5203
5211extern boolean
5213
5214
5221extern boolean
5222 obj_is_crypt_hash (const obj_template_t *obj);
5223
5224
5235extern void
5237
5238
5244extern obj_defval_tk_t *
5245 obj_new_defval_tk (void);
5246
5247
5253extern void
5255
5256
5263extern dlq_hdr_t *
5265
5266
5273extern obj_defval_tk_t *
5274 obj_first_defval_tk (const obj_refine_t *ref);
5275
5276
5283extern obj_defval_tk_t *
5284 obj_next_defval_tk (const obj_defval_tk_t *defval_tk);
5285
5286#define obj_next_dev_defval_tk(D) obj_next_defval_tk(D)
5287
5288
5295extern obj_defval_tk_t *
5297
5298
5305extern boolean
5307
5308
5315extern void
5317 const xmlChar *defval);
5318
5319
5327extern boolean
5329 const xmlChar *find_defval);
5330
5331
5338extern void
5340
5341
5346extern void
5347 obj_enter_xpath_mode (void);
5348
5349
5354extern void
5355 obj_exit_xpath_mode (void);
5356
5357
5365extern obj_key_t *
5367 const xmlChar *keyname);
5368
5369
5376extern ncx_yang_version_t
5378
5379
5389extern boolean
5391
5392
5398extern void
5400
5401
5410extern boolean
5412
5413
5419extern void
5421
5422
5423
5424#if defined(WITH_SNMP) && defined(WITH_RESTCONF)
5431extern const xmlChar *
5433
5434
5445extern obj_oid_t *
5447 boolean *malloced);
5448
5449#endif // WITH_SNMP and WITH_RESTCONF
5450
5451
5460 dlq_hdr_t *keystackQ);
5461
5462
5468extern void obj_dump_keystackQ (dlq_hdr_t *keystackQ);
5469
5470
5477extern void obj_clr_enable_chk (obj_template_t *obj);
5478
5479
5487extern status_t
5489 void *rule);
5490
5491
5498extern void
5500 const void *rule);
5501
5502
5510extern boolean
5512 void *rule);
5513
5514
5524extern status_t
5526 const xmlChar *basestr,
5527 obj_errmsg_t **ret_errmsg);
5528
5529
5537extern status_t
5539 const xmlChar *parmstr);
5540
5541
5550extern status_t
5552 const xmlChar *parmstr,
5553 boolean is_errortag);
5554
5555
5571extern boolean
5573
5574
5582extern boolean
5583 obj_is_singular (const obj_template_t *obj);
5584
5585
5595extern boolean
5597
5598
5605extern boolean
5606 obj_ok_for_nolock (const obj_template_t *obj);
5607
5608
5615extern boolean
5617
5618
5625extern boolean
5627
5628
5635extern boolean obj_get_xpath_oper_ok (const obj_template_t *obj);
5636
5637
5643extern void obj_set_xpath_oper_ok (obj_template_t *obj);
5644
5645
5653extern boolean
5655
5656
5667extern boolean
5669
5670
5677extern obj_template_t *
5679
5680
5687extern boolean
5689
5690
5697extern ncx_module_t *
5699
5700
5708extern obj_template_t *
5710
5711
5722extern boolean
5723 obj_is_ancestor (const obj_template_t *ancestor,
5724 const obj_template_t *obj);
5725
5726
5732extern void
5734
5735
5746extern boolean
5748
5749
5756extern obj_template_t *
5758
5759
5760
5771extern boolean
5773
5774
5775
5786extern boolean
5788
5789
5801extern boolean
5803
5804
5805
5813extern ncx_sm_rootcb_t *
5815
5816
5817
5824extern status_t
5826
5827
5828/*
5829* @brief Object Compare
5830*
5831* @param obj1 object to check
5832* @param obj2 object to check
5833*
5834* @return TRUE if objects match
5835*/
5836extern boolean
5837 obj_match_sm_objs (obj_template_t *obj1,
5838 obj_template_t *obj2);
5839
5848extern boolean
5850
5851
5864extern status_t
5866 const xmlChar *prefix,
5867 const xmlChar *name,
5868 const xmlChar **retval);
5869
5870
5874#ifdef __cplusplus
5875} /* end extern 'C' */
5876#endif
5877
5878#endif /* _H_obj */
log_debug_t
The debug level enumerations used in util/log.c.
Definition: log.h:386
status_t
global error return code
Definition: status_enum.h:187
uint16 xmlns_id_t
integer handle for registered namespaces
Definition: xmlns.h:89
ncx_leafref_class_t
Classification for the types of leafref path statements wrt/ how they can be cached.
Definition: ncxtypes.h:1552
ncx_status_t
enumeration for different YANG data-def status values
Definition: ncxtypes.h:583
ncx_yang_version_t
enumeration for different YANG language versions
Definition: ncxtypes.h:1000
ncx_cfg_t
hardwire the 3 standard configs
Definition: ncxtypes.h:548
uint64 ncx_transaction_id_t
transaction is scoped to single session write operation on a config
Definition: ncxtypes.h:724
ncx_iqual_t
The instance qualifier types are borrowed from ABNF and RelaxNG.
Definition: ncxtypes.h:460
ncx_btype_t
enumeration of the built-in NCX types These types cannot be overridden and cannot be imported
Definition: ncxtypes.h:213
ncx_access_t
NCX Access Control 'max-access' enumeration values Note that access control is applied to the session...
Definition: ncxtypes.h:182
ncx_name_match_t
Node name match modes.
Definition: ncxtypes.h:695
uint64 ncx_sid_t
Standard YANG SID is a 63-bit integer defined as uint64.
Definition: ncxtypes.h:744
ncx_xpath_axis_t
XPath expression axis types.
Definition: ncxtypes.h:662
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:16236
uint32 obj_get_child_count(const obj_template_t *obj)
Get the number of child nodes the object has.
Definition: obj.c:13988
void obj_set_abstract(obj_template_t *obj)
Set the abstract flag for the yang-data node.
Definition: obj.c:18859
obj_key_t * obj_last_key(obj_template_t *obj)
Get the last key record.
Definition: obj.c:10297
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:12484
boolean obj_is_notif(const obj_template_t *obj)
Check if the object is a notification.
Definition: obj.c:15176
boolean obj_is_external_augment(obj_template_t *obj)
Check if an object is an external augment.
Definition: obj.c:17073
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:16023
const xmlChar * obj_get_description(const obj_template_t *obj)
Get the description field for this obj.
Definition: obj.c:11764
boolean obj_has_name(const obj_template_t *obj)
Check if the specified object type has a name.
Definition: obj.c:11619
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:9780
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:12659
boolean obj_is_mp_key(obj_template_t *child)
Check if the parent of this object is a Mount Pount object AND THIS OBJECT IS A KEY LEAF IN THE MP LI...
Definition: obj.c:19840
obj_key_t * obj_new_key(void)
Alloc and Init a obj_key_t struct.
Definition: obj.c:10146
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:15862
boolean obj_is_case(const obj_template_t *obj)
Check if object is a YANG case.
Definition: obj.c:14519
boolean obj_is_hidden(const obj_template_t *obj)
Check if object is marked as a hidden object.
Definition: obj.c:15251
boolean obj_get_max_elements(obj_template_t *obj, uint32 *maxelems)
Get the max-elements clause for this object, if any.
Definition: obj.c:13664
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 'used' flag.
Definition: obj.c:6060
uint32 obj_get_yang_sid_tree(const obj_template_t *obj)
Get the YANG SID Tree ID for this object.
Definition: obj.c:13479
boolean obj_is_cli(const obj_template_t *obj)
Check if object is marked as a CLI object.
Definition: obj.c:15336
obj_template_t * obj_clone_template_sm(ncx_module_t *mod, obj_template_t *srcobj, dlq_hdr_t *mobjQ, boolean sm_clone)
Clone an obj_template_t Copy the pointers from the srcobj into the new obj.
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:15226
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:6559
boolean obj_is_rpcio(const obj_template_t *obj)
Check if the object is an RPC IO node.
Definition: obj.c:15089
boolean obj_get_leaf_list_defset(const obj_template_t *obj)
Get the defset flag for a leaf-list.
Definition: obj.c:18652
obj_unique_t * obj_first_unique(obj_template_t *listobj)
Get the first unique-stmt for a list.
Definition: obj.c:10038
boolean obj_get_config_flag_check(const obj_template_t *obj, boolean *ingrp)
get config flag during YANG module checking
Definition: obj.c:14175
const void * obj_get_reference_addr(const obj_template_t *obj)
Get the reference field for this obj.
Definition: obj.c:12063
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.
Definition: obj.c:11189
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:14790
ncx_module_t * obj_get_mod(obj_template_t *obj)
Get the module pointer for this object.
Definition: obj.c:13259
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:18734
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:12773
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:17269
ncx_backptr_t * obj_first_inherit_when_ptr(obj_template_t *obj)
Get first xpath pointer struct.
Definition: obj.c:17341
const xmlChar * obj_get_oid_string(obj_template_t *obj)
Get object OID sting value.
Definition: obj.c:18881
typ_def_t * obj_get_typdef(obj_template_t *obj)
Get the typdef for the leaf or leaf-list.
Definition: obj.c:13032
grp_template_t * obj_first_grouping(obj_template_t *obj)
Get the first local grouping if any.
Definition: obj.c:9221
void obj_delete_obsolete(dlq_hdr_t *objQ)
Delete any obsolete child nodes within the specified object subtree.
Definition: obj.c:16945
boolean obj_is_password(const obj_template_t *obj)
Check if object is marked as a password object.
Definition: obj.c:15309
boolean obj_get_top_config_flag(const obj_template_t *obj)
Get the config flag for the top-level object.
Definition: obj.c:19321
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:8849
void obj_free_defval_tk(obj_defval_tk_t *def)
Delete an object default tk record;.
Definition: obj.c:18558
boolean obj_find_defval(obj_template_t *obj, const xmlChar *find_defval)
Find a default.
Definition: obj.c:18703
const xmlChar * obj_get_deviate_arg(obj_deviate_arg_t devarg)
Get the deviate-arg string from its enumeration.
Definition: obj.c:10681
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:18230
void * obj_get_presence_string_field(const obj_template_t *obj)
Get the address ot the presence-stmt value, if any.
Definition: obj.c:13914
boolean obj_is_container(const obj_template_t *obj)
Check if object is a YANG container.
Definition: obj.c:14479
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:10194
ncx_sm_rootcb_t * obj_find_ancestor_rootcb(obj_template_t *obj)
Find an ancestor node or self that has a rootcb.
Definition: obj.c:19982
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:19505
obj_unique_comp_t * obj_new_unique_comp(void)
Alloc and Init a obj_unique_comp_t struct.
Definition: obj.c:9951
boolean obj_is_list(const obj_template_t *obj)
Check if object is a YANG list.
Definition: obj.c:14423
const xmlChar * obj_get_augment_target(obj_template_t *obj)
Get the target path string for an augments object.
Definition: obj.c:17055
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:19461
boolean obj_is_anydata(const obj_template_t *obj)
Check if object is an anydata.
Definition: obj.c:14358
const xmlChar * obj_get_altname(const obj_template_t *obj)
Get the alt-name for this object, if any.
Definition: obj.c:16990
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:10465
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:7903
const xmlChar * obj_get_default(const obj_template_t *obj)
Get the default value for the specified object.
Definition: obj.c:12567
status_t obj_set_mp_flags(obj_template_t *obj)
set the Schema Mount flags and create a rootcb if needed
Definition: obj.c:20016
boolean obj_is_p_container(const obj_template_t *obj)
Check if the object is an Presence-container.
Definition: obj.c:15621
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_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:14658
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:16169
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:7340
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:11289
status_t obj_assign_xpath_backptr(obj_template_t *obj, struct xpath_pcb_t_ *xpath)
Set an xpath-expr backptr.
Definition: obj.c:17489
dlq_hdr_t * obj_get_defvalQ(obj_template_t *obj)
Get the leaf-list default Q.
Definition: obj.c:18576
const xmlChar * obj_get_type_name(const obj_template_t *obj)
Get the typename for an object.
Definition: obj.c:13401
void obj_ban_nolock_get(obj_template_t *obj)
Ban nolock-get for the object.
Definition: obj.c:19796
void obj_free_key(obj_key_t *key)
Free a obj_key_t struct.
Definition: obj.c:10169
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:12610
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:11068
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:15641
const void * obj_get_description_addr(const obj_template_t *obj)
Get the address of the description field for this obj.
Definition: obj.c:11945
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:7235
status_t obj_get_appinfo(obj_template_t *obj, const xmlChar *prefix, const xmlChar *name, const xmlChar **retval)
Get the first (or only) instance of the specified appinfo.
Definition: obj.c:20234
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:10832
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:5954
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:13780
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:14295
void obj_init_unique(obj_unique_t *un)
Init a obj_unique_t struct.
Definition: obj.c:9874
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:17918
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:11398
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:16842
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:19729
status_t obj_add_errmsg_parm(obj_errmsg_t *errmsg, const xmlChar *parmstr)
Add an errmsg parameter for the object.
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:10504
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:6638
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:14829
obj_key_t * obj_next_key(obj_key_t *objkey)
Get the next key record.
Definition: obj.c:10355
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:17144
void obj_clean_datadefQ(dlq_hdr_t *que)
Clean and free all the obj_template_t structs in the specified Q.
Definition: obj.c:8927
typ_def_t * obj_get_base_typdef(obj_template_t *obj)
Get the base typdef for the leaf or leaf-list.
Definition: obj.c:13061
boolean obj_is_xsdlist(const obj_template_t *obj)
Check if object is marked as an XSD list.
Definition: obj.c:15324
void obj_clean_unique(obj_unique_t *un)
Clean a obj_unique_t struct.
Definition: obj.c:9918
obj_key_t * obj_prev_key(obj_key_t *objkey)
Get the previous key record.
Definition: obj.c:10383
boolean obj_in_action(const obj_template_t *obj)
Check if the object is within or is an action method.
Definition: obj.c:15134
void obj_dump_keystackQ(dlq_hdr_t *keystackQ)
Dump a keystackQ with backptrs to obj_template_t for key leafs.
Definition: obj.c:19097
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:15783
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:17158
boolean obj_ok_for_nolock(const obj_template_t *obj)
check an object OK for nolock
Definition: obj.c:19350
boolean obj_has_typedefs(const obj_template_t *obj)
Check if the object has any nested typedefs in it.
Definition: obj.c:12949
void obj_add_child(obj_template_t *child, obj_template_t *parent)
Add a child object to the specified complex node.
Definition: obj.c:17181
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:18137
boolean obj_in_rpc(const obj_template_t *obj)
Check if the object is in an rpc/input section.
Definition: obj.c:14950
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:15964
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:15357
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:17251
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:19762
boolean obj_is_rpcio_input(const obj_template_t *obj)
Check if the object is an RPC IO node.
Definition: obj.c:15102
const xmlChar * obj_get_alt_description(const obj_template_t *obj)
obj_get_alt_description (DEPRECATED)
Definition: obj.c:11825
status_t obj_gen_object_id_datapath(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:10879
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,...
Definition: obj.c:7690
void obj_set_xpath_oper_ok(obj_template_t *obj)
Set the object XPath oper OK flag.
Definition: obj.c:19683
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:7820
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:8661
boolean obj_is_datapath(const obj_template_t *obj)
Check if object is marked as a ywx:datapath object.
Definition: obj.c:15875
obj_defval_tk_t * obj_new_defval_tk(void)
Create a new object default tk record;.
Definition: obj.c:18541
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:16097
void obj_free_unique_comp(obj_unique_comp_t *unc)
Free a obj_unique_comp_t struct.
Definition: obj.c:9974
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:17945
boolean obj_is_crypt_hash(const obj_template_t *obj)
Check if the object is a leaf of type crypt-hash.
Definition: obj.c:18487
boolean obj_rpc_has_input(obj_template_t *obj)
Check if the RPC object has any real input children.
Definition: obj.c:16073
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:14816
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:15405
boolean obj_has_get2cb(obj_template_t *obj)
Check if current object has GET2 callback registered.
Definition: obj.c:19255
boolean obj_match_datarule(obj_template_t *obj, void *rule)
Check if the data-rule back-ptr applies to this node.
Definition: obj.c:19198
const xmlChar * obj_get_mod_prefix(const obj_template_t *obj)
Get the module prefix for this object.
Definition: obj.c:13166
ncx_iqual_t obj_get_iqualval(obj_template_t *obj)
Get the instance qualifier for this object.
Definition: obj.c:13501
obj_iffeature_ptr_t * obj_first_iffeature_ptr(obj_template_t *obj)
Get first if-feature pointer.
Definition: obj.c:17305
boolean obj_in_submodule(obj_template_t *obj)
Check if the object is defined in a submodule.
Definition: obj.c:13300
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:15475
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:17095
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:7627
uint32 obj_get_real_level(const obj_template_t *obj)
Get the nest level for the specified object Top-level is '1' Does not count groupings as a level Does...
Definition: obj.c:12912
boolean obj_get_min_elements(obj_template_t *obj, uint32 *minelems)
Get the min-elements clause for this object, if any.
Definition: obj.c:13619
boolean obj_is_rpc_root(const obj_template_t *obj)
Check if object is marked as an RPC root object.
Definition: obj.c:15296
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:9442
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:9296
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:7129
boolean obj_any_notifs(const dlq_hdr_t *datadefQ)
Check if there are any notifications in the datadefQ.
Definition: obj.c:10593
boolean obj_rpc_has_output(obj_template_t *obj)
Check if the RPC object has any real output children.
Definition: obj.c:16084
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:16199
void obj_free_deviate(obj_deviate_t *deviate)
Clean and free an object deviate statement.
Definition: obj.c:10650
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.
const xmlChar * obj_get_mod_xmlprefix(const obj_template_t *obj)
Get the module prefix for this object.
Definition: obj.c:13197
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:14757
const xmlChar * obj_get_info_description(const obj_template_t *obj)
Get the info description field for this obj Check if a 'info' appinfo node is present.
Definition: obj.c:11910
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:10123
xmlns_id_t obj_get_nsid(const obj_template_t *obj)
Get the namespace ID for this object.
Definition: obj.c:13436
obj_key_t * obj_first_key(obj_template_t *obj)
Get the first key record.
Definition: obj.c:10268
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:12192
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:11130
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:17015
obj_metadata_t * obj_new_metadata(void)
Malloc and initialize the fields in a an obj_metadata_t.
Definition: obj.c:16138
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:8064
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:8953
boolean obj_is_rpc(const obj_template_t *obj)
Check if the object is an RPC method.
Definition: obj.c:15057
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,...
Definition: obj.c:17695
boolean obj_is_xpath_string(const obj_template_t *obj)
Check if object is an XPath string.
Definition: obj.c:15508
obj_unique_t * obj_find_unique(dlq_hdr_t *que, const xmlChar *xpath)
Find a specific unique-stmt.
Definition: obj.c:10002
void obj_force_disabled(obj_template_t *obj)
Force an object to be disabled.
Definition: obj.c:19016
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:7481
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:17230
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:18783
boolean obj_is_anyxml(const obj_template_t *obj)
Check if object is an anyxml.
Definition: obj.c:14345
boolean obj_is_terminal(const obj_template_t *obj)
Check if object is a proper leaf or leaflist or anyxml.
Definition: obj.c:14567
void obj_force_root(obj_template_t *obj)
Set the object as an anydata type of root.
Definition: obj.c:15282
status_t obj_gen_object_id_sid(const obj_template_t *obj, xmlChar **buff)
Malloc and Generate the object ID for an object node for SID path usage.
Definition: obj.c:11324
typ_template_t * obj_first_typedef(obj_template_t *obj)
Get the first local typedef for this object, if any.
Definition: obj.c:9054
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:8896
void obj_set_notif_enabled(obj_template_t *obj, boolean enabled)
Set the notification object enabled flag.
Definition: obj.c:18183
uint8 obj_get_sil_priority(obj_template_t *obj)
Get the SIL priority field.
Definition: obj.c:18350
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:18119
status_t obj_set_name(obj_template_t *obj, const xmlChar *objname)
Set the name field for this obj.
Definition: obj.c:11526
const xmlChar * obj_get_presence_string(const obj_template_t *obj)
Get the present-stmt value, if any.
Definition: obj.c:13883
void obj_clean_deviationQ(dlq_hdr_t *deviationQ)
Clean and free an Q of object deviation statements.
Definition: obj.c:10763
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:6274
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,...
Definition: obj.c:10232
boolean obj_ok_for_cli(obj_template_t *obj)
Figure out if the obj is OK for current CLI implementation.
Definition: obj.c:15890
boolean obj_in_list(const obj_template_t *obj)
Check if object is nested within a list.
Definition: obj.c:14436
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:12700
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:8286
ncx_iqual_t obj_get_iqualval_ex(obj_template_t *obj, boolean required)
Get the instance qualifier for this object.
Definition: obj.c:13531
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:12126
boolean obj_is_obsolete(const obj_template_t *obj)
Check if the object has obsolete status.
Definition: obj.c:18250
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:13949
void obj_number_data_object(obj_template_t *obj)
Number the object tree; initial setup.
Definition: obj.c:18522
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:15392
void obj_clear_xpath_backptr(obj_template_t *obj, struct xpath_pcb_t_ *xpath)
Clear an xpath-expr backptr.
Definition: obj.c:17574
boolean obj_get_config_flag_deep(const obj_template_t *obj)
get config flag during augment expand
Definition: obj.c:14084
const xmlChar * obj_get_mod_version(const obj_template_t *obj)
Get the module version for this object.
Definition: obj.c:13375
boolean obj_has_xpath_stmts(obj_template_t *obj)
Check if any must or when stmts in node or all children.
Definition: obj.c:20190
uint32 obj_get_level(const obj_template_t *obj)
Get the nest level for the specified object Top-level is '1' Does not count groupings as a level.
Definition: obj.c:12830
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:7300
boolean obj_is_system_ordered(const obj_template_t *obj)
Check if the object is system or user-ordered.
Definition: obj.c:15578
ncx_yang_version_t obj_get_langver(obj_template_t *obj)
Get the YANG version for this object.
Definition: obj.c:18811
boolean obj_is_cli_text_block(const obj_template_t *obj)
Check if object is marked as ywx:cli-text-block.
Definition: obj.c:17131
boolean obj_is_sm_rpc(const obj_template_t *obj)
Check if the object is a schema mounted RPC method.
Definition: obj.c:15070
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:18939
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:11251
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:18206
obj_template_t * obj_get_parent_choice(obj_template_t *obj)
Get the choice parent of the current object;.
Definition: obj.c:19809
ncx_backptr_t * obj_next_inherit_when_ptr(ncx_backptr_t *ptr)
Get the next xpath pointer struct.
Definition: obj.c:17359
boolean obj_is_data_node(const obj_template_t *obj)
Check if the object is a real node type.
Definition: obj.c:14904
boolean obj_is_mp_parent(obj_template_t *child)
Check if the parent of this object is a Mount Pount object.
Definition: obj.c:19923
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:7014
boolean obj_is_sm_notif(const obj_template_t *obj)
Check if the object is a schema-mounted notification.
Definition: obj.c:15189
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,...
Definition: obj.c:14862
boolean obj_is_short_case(obj_template_t *obj)
Check if the object is a short case statement.
Definition: obj.c:15812
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:6317
boolean obj_is_mounted(obj_template_t *child)
Check if mounted object.
Definition: obj.c:19874
boolean obj_is_abstract_ex(const obj_template_t *obj)
DUPLICATE FUNCTION OF obj_in_abstract()
Definition: obj.c:18840
boolean obj_any_rpcs(const dlq_hdr_t *datadefQ)
Check if there are any RPC methods in the datadefQ.
Definition: obj.c:10558
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:6146
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:17859
ncx_status_t obj_get_status(const obj_template_t *obj)
Get the status field for this obj.
Definition: obj.c:11704
boolean obj_is_leaf_list(const obj_template_t *obj)
Check if object is a proper leaf-list.
Definition: obj.c:14410
obj_template_t * obj_get_augment_targobj(obj_template_t *obj)
Get the target object for an augments object.
Definition: obj.c:17036
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:6731
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:14015
obj_iffeature_ptr_t * obj_next_iffeature_ptr(obj_iffeature_ptr_t *iffptr)
Get the next if-feature pointer.
Definition: obj.c:17323
obj_metadata_t * obj_next_metadata(const obj_metadata_t *meta)
Get the next object metadata definition in the object.
Definition: obj.c:16304
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:19057
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:17432
ncx_leafref_class_t obj_get_leafref_class(obj_template_t *obj)
Get the leafref class for a leafref object.
Definition: obj.c:18449
obj_defval_tk_t * obj_first_defval_tk(const obj_refine_t *ref)
Get the first defval_tk entry.
Definition: obj.c:18595
void obj_set_sil_priority(obj_template_t *obj, uint8 prio)
Set the SIL priority field.
Definition: obj.c:18325
void obj_clear_datarule(obj_template_t *obj, const void *rule)
Clear the datarule back-ptr for this node.
Definition: obj.c:19164
uint32 obj_get_level_mp(const obj_template_t *obj)
Get the nest level for the specified object Top-level is '1' Does not count groupings as a level.
Definition: obj.c:12874
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:6473
obj_template_t * obj_new_template(obj_type_t objtype)
Malloc and initialize the fields in a an object template.
Definition: obj.c:5664
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:14378
boolean obj_in_notif(const obj_template_t *obj)
Check if the object is in a notification.
Definition: obj.c:15026
boolean obj_find_xpath_backptr(obj_template_t *obj, struct xpath_pcb_t_ *xpath)
Find an xpath-expr backptr.
Definition: obj.c:17380
void obj_enter_xpath_mode(void)
Enter xpath mode and start ignoring obj_is_enabled.
Definition: obj.c:18755
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:5802
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:10962
boolean obj_is_mandatory(obj_template_t *obj)
Figure out if the obj is YANG mandatory or not.
Definition: obj.c:14584
boolean obj_has_children(obj_template_t *obj)
Check if there are any accessible nodes within the object.
Definition: obj.c:15945
boolean obj_is_schema_instance_string(const obj_template_t *obj)
Check if object is a schema-instance string.
Definition: obj.c:15534
ncx_sid_t obj_get_yang_sid(const obj_template_t *obj)
Get the YANG SID for this object.
Definition: obj.c:13463
obj_deviation_t * obj_new_deviation(void)
Malloc and initialize the fields in a an object deviation statement.
Definition: obj.c:10711
uint16 obj_get_key_num(obj_template_t *obj)
Get the key number for the object.
Definition: obj.c:18051
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:15419
void obj_free_iffeature_ptr(obj_iffeature_ptr_t *iffptr)
Free an obj_iffeature_ptr_t struct.
Definition: obj.c:17289
const xmlChar * obj_get_reference(const obj_template_t *obj)
Get the reference field for this obj.
Definition: obj.c:12004
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:18472
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:10096
void obj_set_key_leaf(obj_template_t *obj, uint16 keynum)
Set the key data for the object.
Definition: obj.c:18028
boolean obj_is_deleted(const obj_template_t *obj)
Check if object has been deleted by a deviate not-supported.
Definition: obj.c:15453
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:6392
uint8 obj_get_fraction_digits(const obj_template_t *obj)
Get the fraction-digits field from the object typdef.
Definition: obj.c:14261
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:11020
obj_defval_tk_t * obj_first_dev_defval_tk(const obj_deviate_t *dev)
Get the first defval_tk entry.
Definition: obj.c:18633
obj_unique_t * obj_new_unique(void)
Alloc and Init a obj_unique_t struct.
Definition: obj.c:9851
dlq_hdr_t * obj_get_leafrefQ(const obj_template_t *obj)
Get the leafrefQ for this obj.
Definition: obj.c:12310
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:18671
boolean obj_has_iffeature(obj_template_t *obj)
Check any if-feature statements exist for the specified object.
Definition: obj.c:15737
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:19031
const xmlChar * obj_get_units(obj_template_t *obj)
Get the units clause for this object, if any.
Definition: obj.c:13705
boolean obj_is_empty(const obj_template_t *obj)
Check if object was entered in empty fashion:
Definition: obj.c:15211
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:18416
boolean obj_in_rpc_reply(const obj_template_t *obj)
Check if the object is in an rpc-reply/output section.
Definition: obj.c:14992
boolean obj_is_action(const obj_template_t *obj)
Check if the object is a YANG 1.1 action.
Definition: obj.c:15121
boolean obj_is_uses(const obj_template_t *obj)
Check if object is a YANG uses-stmt.
Definition: obj.c:14539
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:7766
const xmlChar * obj_get_keystr(obj_template_t *obj)
Get the key string for this list object.
Definition: obj.c:16917
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:11671
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:12165
boolean obj_is_leafy(const obj_template_t *obj)
Check if object is a proper leaf or leaflist.
Definition: obj.c:14552
void obj_exit_xpath_mode(void)
Exit xpath mode and stop ignoring obj_is_enabled.
Definition: obj.c:18764
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:7594
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:13090
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:19614
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:18010
const ncx_iffeature_t * obj_get_next_iffeature(const ncx_iffeature_t *iffeature)
Get the next if-feature clause (if any)
Definition: obj.c:14324
boolean obj_is_mp_with_rootcb(const obj_template_t *obj)
Check if current object is Mount Point object.
Definition: obj.c:19956
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:17802
boolean obj_notif_enabled(const obj_template_t *obj)
Check if the notification object is enabled.
Definition: obj.c:18151
obj_metadata_t * obj_first_metadata(const obj_template_t *obj)
Get the first object metadata definition in the object.
Definition: obj.c:16276
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:7378
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:13846
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:14730
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:7562
dlq_hdr_t * obj_get_mustQ(const obj_template_t *obj)
Get the mustQ for this obj.
Definition: obj.c:12264
dlq_hdr_t * obj_get_datadefQ(obj_template_t *obj)
Get the datadefQ (or caseQ) if this object has one.
Definition: obj.c:12404
const xmlChar * obj_get_mod_name(const obj_template_t *obj)
Get the module name for this object.
Definition: obj.c:13217
boolean obj_notif_log_drops(const obj_template_t *obj)
Check if the event drops for the notification object is enabled.
Definition: obj.c:18167
void obj_set_ncx_flags(obj_template_t *obj)
Check the NCX appinfo extensions and set flags as needed.
Definition: obj.c:16415
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:19399
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:5993
obj_unique_t * obj_next_unique(obj_unique_t *un)
Get the next unique-stmt for a list.
Definition: obj.c:10070
boolean obj_is_secure(const obj_template_t *obj)
Check if object is tagged ncx:secure.
Definition: obj.c:15552
boolean obj_get_xpath_oper_ok(const obj_template_t *obj)
Get the object XPath oper OK flag.
Definition: obj.c:19661
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:7932
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:14743
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:18993
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:19705
uint32 obj_key_count(const obj_template_t *obj)
Get the number of keys for this object.
Definition: obj.c:10435
ncx_btype_t obj_get_basetype(const obj_template_t *obj)
Get the NCX base type enum for the object type.
Definition: obj.c:13118
const xmlChar * obj_get_typestr(const obj_template_t *obj)
Get the name of the object type.
Definition: obj.c:12344
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:18100
boolean obj_is_choice(const obj_template_t *obj)
Check if object is a YANG choice.
Definition: obj.c:14499
status_t obj_cache_datarule(obj_template_t *obj, void *rule)
Set the data-rule back-ptr for this node.
Definition: obj.c:19129
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:13807
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:17209
struct xpath_pcb_t_ * obj_first_xpath_backptr(obj_template_t *obj)
Get the first xpath backptr.
Definition: obj.c:17412
dlq_hdr_t * obj_get_appinfoQ(obj_template_t *obj)
Get the appinfoQ for this obj.
Definition: obj.c:12238
obj_template_t * obj_get_parent(obj_template_t *obj)
Get the parent of the current object.
Definition: obj.c:13753
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:9122
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:17118
obj_defval_tk_t * obj_next_defval_tk(const obj_defval_tk_t *defval_tk)
Get the next defval_tk entry.
Definition: obj.c:18614
const xmlChar * obj_get_name(const obj_template_t *obj)
Get the name field for this obj.
Definition: obj.c:11463
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:16041
void obj_free_unique(obj_unique_t *un)
Free a obj_unique_t struct.
Definition: obj.c:9897
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:15990
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:6102
const obj_key_t * obj_next_ckey(const obj_key_t *objkey)
Get the next key record: Const version.
Definition: obj.c:10409
boolean obj_is_np_container(const obj_template_t *obj)
Check if the object is an Non-Presence-container.
Definition: obj.c:15601
void obj_free_deviation(obj_deviation_t *deviation)
Clean and free an object deviation statement.
Definition: obj.c:10735
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:16333
boolean obj_is_augment(const obj_template_t *obj)
Check if the obj is an augment statement.
Definition: obj.c:14777
const obj_key_t * obj_first_ckey(const obj_template_t *obj)
Get the first key record: Const version.
Definition: obj.c:10326
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:10785
boolean obj_is_leaf(const obj_template_t *obj)
Check if object is a proper leaf.
Definition: obj.c:14397
const xmlChar * obj_get_help_description(const obj_template_t *obj)
Get the help description field for this obj Check if a 'help' appinfo node is present.
Definition: obj.c:11874
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:18081
boolean obj_is_root(const obj_template_t *obj)
Check if object is marked as a root object.
Definition: obj.c:15264
boolean obj_is_singular(const obj_template_t *obj)
Check if the object can have only one instance or not.
Definition: obj.c:19285
obj_template_t * obj_get_top_aio_get2(obj_template_t *child)
Find the top AIO object.
Definition: obj.c:19571
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:17647
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:6022
obj_deviate_t * obj_new_deviate(void)
Malloc and initialize the fields in a an object deviate statement.
Definition: obj.c:10625
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:8479
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:17989
boolean obj_is_very_secure(const obj_template_t *obj)
Check if object is tagged ncx:very-secure.
Definition: obj.c:15565
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:16794
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:13338
boolean obj_parent_same_module(const obj_template_t *obj)
Check if the object parent object is the same.
Definition: obj.c:18281
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:12749
boolean obj_has_mandatory_children(obj_template_t *obj)
Check if there are any mandatory children.
Definition: obj.c:19430
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:755
obj_augtype_t
enumeration for different YANG augment statement types
Definition: obj.h:759
unsigned long oid_t
data type used in SNMP
Definition: obj.h:1154
uint8 obj_testflags_t
object test flags
Definition: obj.h:1169
obj_deviate_arg_t
type of deviation for each deviate entry
Definition: obj.h:1330
obj_type_t
enumeration for different YANG data def statement types the enum order is significant!...
Definition: obj.h:648
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:1435
@ OBJ_AUGTYP_RPCOUT
rpc output
Definition: obj.h:762
@ OBJ_AUGTYP_NONE
not set
Definition: obj.h:760
@ OBJ_AUGTYP_DATA
within data
Definition: obj.h:764
@ OBJ_AUGTYP_RPCIN
rpc input
Definition: obj.h:761
@ OBJ_AUGTYP_CASE
case
Definition: obj.h:763
@ OBJ_DARG_NONE
not set
Definition: obj.h:1331
@ OBJ_DARG_NOT_SUPPORTED
deviate not-supported
Definition: obj.h:1335
@ OBJ_DARG_DELETE
deviate delete
Definition: obj.h:1333
@ OBJ_DARG_ADD
deviate add
Definition: obj.h:1332
@ OBJ_DARG_REPLACE
deviate replace
Definition: obj.h:1334
@ OBJ_TYP_CASE
This object represents a YANG case schema node.
Definition: obj.h:678
@ OBJ_TYP_ANYXML
This object represents a YANG 1.1 anydata data node.
Definition: obj.h:652
@ OBJ_TYP_CHOICE
This object represents a YANG choice schema node.
Definition: obj.h:673
@ OBJ_TYP_ACTION
This object represents a YANG 1.1 action schema node.
Definition: obj.h:744
@ OBJ_TYP_REFINE
This object represents a YANG refine statement.
Definition: obj.h:697
@ OBJ_TYP_USES
This object represents a YANG uses schema node.
Definition: obj.h:689
@ OBJ_TYP_NOTIF
This object represents a YANG notification statement.
Definition: obj.h:734
@ OBJ_TYP_LEAF_LIST
This object represents a YANG leaf-list data node.
Definition: obj.h:664
@ OBJ_TYP_LEAF
This object represents a YANG leaf data node.
Definition: obj.h:661
@ OBJ_TYP_ANYDATA
This object represents a YANG 1.1 anydata data node.
Definition: obj.h:737
@ OBJ_TYP_NONE
not set
Definition: obj.h:649
@ OBJ_TYP_RPCIO
This object represents a YANG input or output statement.
Definition: obj.h:725
@ OBJ_TYP_RPC
This object represents a YANG rpc statement.
Definition: obj.h:717
@ OBJ_TYP_CONTAINER
This object represents a YANG presence or non-presence container.
Definition: obj.h:658
@ OBJ_TYP_LIST
This object represents a YANG list data node.
Definition: obj.h:667
@ OBJ_TYP_AUGMENT
This object represents a YANG augment statement.
Definition: obj.h:708
YANG Grouping Statement Handler.
NCX System Logging Manager.
Contains NCX constants.
YANG module data structures Many internal representations of YANG module constructs.
NETCONF protocol remote procedure call common definitions.
Global error messages for status code enumerations.
One YANG 'grouping' definition – sibling set template.
Definition: grp.h:87
used with various structs to cache back-ptrs the 'node' pointer may or may not be malloced!...
Definition: ncxtypes.h:1511
struct to remember error info tkc->cur_err will be checked before tkc->cur for error information
Definition: ncxtypes.h:864
YANG if-feature entry.
Definition: ncxtypes.h:940
representation of one module or submodule during and after parsing
Definition: ncxtypes.h:1125
Schema Mount Root Control Block used in the object template.
Definition: ncxtypes.h:1860
One YANG augment statement struct (top-level or in case-stmt.
Definition: obj.h:1073
dlq_hdr_t datadefQ
Q of obj_template_t.
Definition: obj.h:1089
ncx_status_t status
status-stmt
Definition: obj.h:1088
xmlChar * target
Xpath schema-node target to augment.
Definition: obj.h:1075
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:1081
obj_augtype_t augtype
internal augment type enum
Definition: obj.h:1087
uint16 depth
internal nest depth of augment
Definition: obj.h:1090
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:1078
struct obj_template_t_ * targobj
resolved backptr to augmented object
Definition: obj.h:1084
One YANG 'case' definition.
Definition: obj.h:948
xmlChar * name
case name
Definition: obj.h:949
ncx_status_t status
status-stmt
Definition: obj.h:962
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:955
boolean nameclone
the nameclone flag is set even though the clone bit is also set; this can probably be removed
Definition: obj.h:961
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:952
dlq_hdr_t * datadefQ
Q of obj_template_t.
Definition: obj.h:957
One YANG 'choice' definition.
Definition: obj.h:932
dlq_hdr_t * caseQ
Q of obj_template_t.
Definition: obj.h:941
xmlChar * name
choice name
Definition: obj.h:933
ncx_status_t status
status-stmt
Definition: obj.h:943
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:940
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:937
xmlChar * defval
default case
Definition: obj.h:934
boolean caseQclone
flag caseQ is cloned
Definition: obj.h:942
One YANG 'container' definition.
Definition: obj.h:805
xmlChar * name
name of container
Definition: obj.h:807
ncx_status_t status
status-stmt
Definition: obj.h:820
xmlChar * ref
reference-stmt (not saved by server)
Definition: obj.h:813
dlq_hdr_t mustQ
Q of xpath_pcb_t.
Definition: obj.h:821
xmlChar * presence
presence-stmt
Definition: obj.h:816
xmlChar * descr
description-stmt (not saved by server)
Definition: obj.h:810
struct obj_template_t_ * defaultparm
default parm for yangcli
Definition: obj.h:822
dlq_hdr_t * typedefQ
Q of typ_template_t.
Definition: obj.h:817
dlq_hdr_t * datadefQ
Q of obj_template_t.
Definition: obj.h:819
dlq_hdr_t * groupingQ
Q of grp_template_t.
Definition: obj.h:818
One YANG 1.1 default stored in a Q for refine and deviate.
Definition: obj.h:777
xmlChar * def
default value string
Definition: obj.h:779
dlq_hdr_t qhdr
queue header
Definition: obj.h:778
ncx_error_t def_tkerr
file and line info for compiler
Definition: obj.h:780
YANG deviate statement struct.
Definition: obj.h:1340
dlq_hdr_t defval_tkQ
Q of obj_defval_tk_t (leaf-list can have multiple default-stmt)
Definition: obj.h:1373
dlq_hdr_t uniqueQ
Q of obj_unique_t.
Definition: obj.h:1395
ncx_error_t tkerr
the error info for each sub-clause is saved because when the deviation-stmt is parsed,...
Definition: obj.h:1349
dlq_hdr_t appinfoQ
Q of ncx_appinfo_t.
Definition: obj.h:1396
ncx_error_t arg_tkerr
same comment as tkerr
Definition: obj.h:1358
dlq_hdr_t mustQ
Q of xpath_pcb_t.
Definition: obj.h:1394
boolean config
deviating config-stmt
Definition: obj.h:1376
dlq_hdr_t qhdr
queue header
Definition: obj.h:1341
typ_def_t * typdef
typedef if deviating the type
Definition: obj.h:1361
ncx_error_t type_tkerr
same comment as tkerr
Definition: obj.h:1364
uint32 maxelems
deviating max-elements
Definition: obj.h:1392
ncx_error_t config_tkerr
same comment as tkerr
Definition: obj.h:1379
uint32 minelems
deviating min-elements
Definition: obj.h:1388
ncx_error_t minelems_tkerr
also minset
Definition: obj.h:1389
xmlChar * units
units if deviating the units
Definition: obj.h:1367
boolean empty
deviate-stmt is empty
Definition: obj.h:1352
ncx_error_t units_tkerr
same comment as tkerr
Definition: obj.h:1370
ncx_error_t maxelems_tkerr
also maxset
Definition: obj.h:1393
ncx_error_t mandatory_tkerr
same comment as tkerr
Definition: obj.h:1385
obj_deviate_arg_t arg
deviate argument enum
Definition: obj.h:1355
boolean mandatory
deviating mandatory-stmt
Definition: obj.h:1382
YANG deviation statement struct.
Definition: obj.h:1401
ncx_error_t tkerr
file and line info for compiler
Definition: obj.h:1414
dlq_hdr_t appinfoQ
Q of ncx_appinfo_t.
Definition: obj.h:1420
xmlChar * target
schema-node target to deviate
Definition: obj.h:1403
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:1411
xmlChar * devmodname
set if not the targmod
Definition: obj.h:1415
dlq_hdr_t qhdr
queue header
Definition: obj.h:1402
obj_template_t * targobj
target object when resolved
Definition: obj.h:1405
dlq_hdr_t deviateQ
Q of obj_deviate_t.
Definition: obj.h:1419
status_t res
parse status
Definition: obj.h:1418
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:1408
boolean empty
for display in yangdump
Definition: obj.h:1416
boolean annotation
set from annotation
Definition: obj.h:1417
xmlChar * targmodname
target module name
Definition: obj.h:1404
custom error message filter control block
Definition: obj.h:1123
dlq_hdr_t qhdr
queue header
Definition: obj.h:1124
boolean is_errortag
error-tag flag
Definition: obj.h:1126
xmlChar * matchstr
message string to match
Definition: obj.h:1125
custom error message parameter control block
Definition: obj.h:1131
dlq_hdr_t qhdr
queue header
Definition: obj.h:1132
uint32 len
state : length
Definition: obj.h:1136
xmlChar * path
path of replacement data
Definition: obj.h:1133
xmlChar * valstr
state: value string
Definition: obj.h:1139
custom error message control block
Definition: obj.h:1144
xmlChar * langstr
language string
Definition: obj.h:1147
dlq_hdr_t qhdr
queue header
Definition: obj.h:1145
dlq_hdr_t parmQ
Q of obj_errmsg_parm_t.
Definition: obj.h:1148
xmlChar * basestr
base string
Definition: obj.h:1146
dlq_hdr_t filterQ
Q of obj_errmsg_filter_t.
Definition: obj.h:1149
back-pointer to inherited if-feature statements
Definition: obj.h:1116
dlq_hdr_t qhdr
queue heaader
Definition: obj.h:1117
ncx_iffeature_t * iffeature
if-feature back-ptr
Definition: obj.h:1118
One YANG list key component.
Definition: obj.h:769
struct obj_template_t_ * keyobj
backptr to key object
Definition: obj.h:771
dlq_hdr_t qhdr
queue header
Definition: obj.h:770
boolean seen
used by yangdiff
Definition: obj.h:772
One YANG 'leaf' or 'anyxml' or 'anydata' definition.
Definition: obj.h:828
struct obj_template_t_ * leafrefobj
leafref obj backptr only if btyp == NCX_BT_LEAFREF
Definition: obj.h:859
xmlChar * name
name of leaf or anyxml/anydata
Definition: obj.h:830
ncx_status_t status
status-stmt
Definition: obj.h:848
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:842
dlq_hdr_t mustQ
Q of xpath_pcb_t.
Definition: obj.h:853
typ_def_t * typdef
typedef for the data type (leaf only)
Definition: obj.h:845
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:839
xmlChar * units
units-stmt only in a leaf
Definition: obj.h:833
dlq_hdr_t leafrefQ
used for quick validation on server
Definition: obj.h:856
xmlChar * defval
default-stmt only in a leaf
Definition: obj.h:836
uint16 keynum
internal key number only for keay leafs
Definition: obj.h:851
One YANG 'leaf-list' definition.
Definition: obj.h:864
struct obj_template_t_ * leafrefobj
leafref obj backptr only if btyp == NCX_BT_LEAFREF
Definition: obj.h:893
xmlChar * name
leaf-list name
Definition: obj.h:866
ncx_status_t status
status-stmt
Definition: obj.h:887
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:875
boolean minset
min-elements set
Definition: obj.h:883
boolean maxset
max-elements set
Definition: obj.h:885
dlq_hdr_t mustQ
Q of xpath_pcb_t.
Definition: obj.h:888
typ_def_t * typdef
typedef for the data type
Definition: obj.h:878
uint32 maxelems
max-elements value
Definition: obj.h:886
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:872
uint32 minelems
min-elements value
Definition: obj.h:884
xmlChar * units
units-stmt
Definition: obj.h:869
dlq_hdr_t leafrefQ
Q of ncx_backptr_t to obj_template_t.
Definition: obj.h:889
dlq_hdr_t defvalQ
YANG 1.1, Q of malloced ncx_backptr_t.
Definition: obj.h:890
boolean ordersys
ordered-by system or user
Definition: obj.h:882
boolean defset
T if any defaults specified for this leaf-list.
Definition: obj.h:881
One YANG 'list' definition.
Definition: obj.h:898
dlq_hdr_t uniqueQ
Q of obj_unique_t.
Definition: obj.h:914
xmlChar * name
list name
Definition: obj.h:900
ncx_status_t status
status-stmt
Definition: obj.h:920
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:909
ncx_error_t keytkerr
saved error info for key-stmt errors
Definition: obj.h:924
boolean minset
min-elements set
Definition: obj.h:916
boolean maxset
max-elements set
Definition: obj.h:918
dlq_hdr_t mustQ
Q of xpath_pcb_t.
Definition: obj.h:921
xmlChar * keystr
key-stmt (not required if config=false)
Definition: obj.h:903
uint32 maxelems
max-elements value
Definition: obj.h:919
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:906
uint32 minelems
min-elements value
Definition: obj.h:917
obj_index_t last_index
internal numbering data for val_child ordering
Definition: obj.h:927
dlq_hdr_t keyQ
Q of obj_key_t.
Definition: obj.h:913
boolean ordersys
ordered-by system or user
Definition: obj.h:915
dlq_hdr_t * typedefQ
Q of typ_template_t.
Definition: obj.h:910
dlq_hdr_t * datadefQ
Q of obj_template_t.
Definition: obj.h:912
dlq_hdr_t * groupingQ
Q of grp_template_t.
Definition: obj.h:911
One YANG metadata (XML attribute) node.
Definition: obj.h:1318
ncx_error_t tkerr
file and line info for compiler
Definition: obj.h:1324
xmlChar * name
metadata name
Definition: obj.h:1321
dlq_hdr_t qhdr
queue header
Definition: obj.h:1319
typ_def_t * typdef
typedef for metadata
Definition: obj.h:1322
struct obj_template_t_ * parent
obj containing metadata
Definition: obj.h:1320
xmlns_id_t nsid
in case parent == NULL
Definition: obj.h:1323
One YANG 'notification' clause definition.
Definition: obj.h:1095
boolean in_data
defined in data, YANG 1.1 only
Definition: obj.h:1111
boolean notif_enabled
enabled or disabled in server
Definition: obj.h:1109
dlq_hdr_t datadefQ
Q of obj_template_t.
Definition: obj.h:1107
xmlChar * name
notification name
Definition: obj.h:1097
ncx_status_t status
status-stmt
Definition: obj.h:1104
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:1103
dlq_hdr_t mustQ
Q of xpath_pcb_t.
Definition: obj.h:1108
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:1100
boolean notif_log_drops
log drops for this event type
Definition: obj.h:1110
dlq_hdr_t * typedefQ
Q of typ_template_t.
Definition: obj.h:1105
dlq_hdr_t * groupingQ
Q of gtp_template_t.
Definition: obj.h:1106
defines the snmp oid value, stored as an array of integers for easier comparision when performing AVL...
Definition: obj.h:1162
oid_t * oidc
OID component.
Definition: obj.h:1164
uint8 cnt
amount of Sub-Ids (max 128)
Definition: obj.h:1163
One YANG refine statement struct.
Definition: obj.h:984
dlq_hdr_t defval_tkQ
Q of obj_defval_tk_t.
Definition: obj.h:1014
xmlChar * target
relative-path of the object to refine
Definition: obj.h:986
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:1003
dlq_hdr_t mustQ
Q of xpath_pcb_t.
Definition: obj.h:1025
xmlChar * presence
refining the presence-stmt
Definition: obj.h:1009
uint32 maxelems
max-elements value
Definition: obj.h:1023
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:992
ncx_error_t ref_tkerr
same comment as descr_tkerr applies here
Definition: obj.h:1006
ncx_error_t config_tkerr
config and confset are in the object flags
Definition: obj.h:1017
uint32 minelems
min-elements value
Definition: obj.h:1021
struct obj_template_t_ * targobj
resolved target object to refine
Definition: obj.h:989
ncx_error_t minelems_tkerr
also minset
Definition: obj.h:1022
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:1000
ncx_error_t maxelems_tkerr
also maxset
Definition: obj.h:1024
ncx_error_t presence_tkerr
same comment as descr_tkerr applies here
Definition: obj.h:1012
ncx_error_t mandatory_tkerr
mandatory and mandset are in the object flags
Definition: obj.h:1020
One YANG rpc-stmt struct.
Definition: obj.h:1050
dlq_hdr_t datadefQ
Q of obj_template_t.
Definition: obj.h:1063
xmlChar * name
rpc method name
Definition: obj.h:1052
ncx_status_t status
status-stmt
Definition: obj.h:1060
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:1058
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:1055
boolean supported
mod loaded, not implemented
Definition: obj.h:1068
dlq_hdr_t * typedefQ
Q of typ_template_t.
Definition: obj.h:1061
dlq_hdr_t * groupingQ
Q of gtp_template_t.
Definition: obj.h:1062
xmlns_id_t nsid
internal fields for manager and agent
Definition: obj.h:1067
boolean is_action
YANG 1.1 only.
Definition: obj.h:1064
One YANG input-stmt or output-stmt struct.
Definition: obj.h:1030
dlq_hdr_t datadefQ
Q of obj_template_t.
Definition: obj.h:1034
xmlChar * name
input or output
Definition: obj.h:1031
dlq_hdr_t mustQ
Q of xpath_pcb_t.
Definition: obj.h:1035
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:1040
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:1045
dlq_hdr_t * typedefQ
Q of typ_template_t.
Definition: obj.h:1032
dlq_hdr_t * groupingQ
Q of gtp_template_t.
Definition: obj.h:1033
One YANG data-def-stmt.
Definition: obj.h:1176
ncx_error_t tkerr
file and line info for compiler
Definition: obj.h:1191
ncx_sid_t yang_sid
Each object specific variant has a YANG SID assigned for CBOR encoding.
Definition: obj.h:1309
obj_oid_t * oid
SNMP OID for this object (set if needed)
Definition: obj.h:1195
ncx_transaction_id_t leafref_txid
current edit transaction ID for intermediate leafref processing
Definition: obj.h:1271
uint32 yang_hash
experimental: not used
Definition: obj.h:1180
obj_testflags_t desc_testflags
see AGT_TEST_FL_* definitions
Definition: obj.h:1190
dlq_hdr_t appinfoQ
Q of ncx_appinfo_t.
Definition: obj.h:1205
dlq_hdr_t iffeatureQ
Q of ncx_iffeature_t.
Definition: obj.h:1206
dlq_hdr_t * errmsgQ
custom error message used if this is the server running
Definition: obj.h:1253
dlq_hdr_t xpath_backptrQ
Q of ncx_back_ptr_t with node == xpath_pcb_t.
Definition: obj.h:1244
void * def_hook_cb
def_hook_cb is ncx_def_hook_cbfn_t callback function for Dynamic Default Hook callback.
Definition: obj.h:1292
uint8 silflags
see OBJ_FL_* definitions
Definition: obj.h:1187
dlq_hdr_t inherited_whenQ
Q of ncx_backptr_t with node == xpath_pcb_t.
Definition: obj.h:1211
struct obj_template_t_ * usesobj
backptr to uses-obj if grouping expand
Definition: obj.h:1200
uint8 sil_priority
picks SIL callback order
Definition: obj.h:1188
ncx_transaction_id_t edit_txid
current edit transaction ID for commit test pruning
Definition: obj.h:1262
ncx_transaction_id_t must_txid
current edit transaction ID for MUST test default nodes pruning
Definition: obj.h:1265
boolean set_snmp_flags
need SNMP flags
Definition: obj.h:1196
ncx_transaction_id_t when_txid
current edit transaction ID for WHEN test default nodes pruning
Definition: obj.h:1268
dlq_hdr_t metadataQ
Q of obj_metadata_t.
Definition: obj.h:1204
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:1259
dlq_hdr_t qhdr
queue header
Definition: obj.h:1177
grp_template_t * grp
non-NULL == in a grp.datadefQ
Definition: obj.h:1192
boolean xpath_oper_ok
object OK for referencing oper-data in XPath
Definition: obj.h:1197
dlq_hdr_t inherited_iffeatureQ
Q of obj_iffeature_ptr_t.
Definition: obj.h:1208
uint32 yang_sid_tree
SID tree assignment if yang_sid is used.
Definition: obj.h:1312
struct xpath_pcb_t_ * when
optional when clause
Definition: obj.h:1203
uint32 flags
see OBJ_FL_* definitions
Definition: obj.h:1182
ncx_sm_rootcb_t * rootcb
Schema Mount Control Block.
Definition: obj.h:1303
uint32 xflags
see OBJ_FL_* definitions
Definition: obj.h:1183
uint32 xflags2
see OBJ_FL_* definitions
Definition: obj.h:1184
obj_index_t index
object index for val_child ordering
Definition: obj.h:1193
struct obj_template_t_ * parent
backptr to parent
Definition: obj.h:1199
obj_type_t objtype
object type (def)
Definition: obj.h:1178
void * commit_test_cb
backptr to the commit_test record for this object which will only exist if this object has 'must' or ...
Definition: obj.h:1250
uint32 uflags
see OBJ_FL_* definitions
Definition: obj.h:1186
obj_testflags_t testflags
see AGT_TEST_FL_* definitions
Definition: obj.h:1189
void * bool_eval_cb
The bool_eval_cb callback function may be set to allow XPath eval to be done by the callback instead ...
Definition: obj.h:1300
void * get2cb
get2fn is getcb_fn2_t for local GET2
Definition: obj.h:1226
dlq_hdr_t * dataruleQ
Q obj NACM data-rule backptrs.
Definition: obj.h:1214
void * cbset
cbset is different based on the object type:
Definition: obj.h:1223
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:1235
xmlns_id_t nsid
namespace ID assigned to the object at run-time
Definition: obj.h:1238
struct obj_template_t_ * augobj
backptr to augment-obj if augment expand
Definition: obj.h:1201
One component in a YANG list unique target.
Definition: obj.h:785
boolean isduplicate
T: will be ignored by server.
Definition: obj.h:789
dlq_hdr_t qhdr
queue header
Definition: obj.h:786
xmlChar * xpath
saved unique str for this obj
Definition: obj.h:788
struct obj_template_t_ * unobj
unique object target
Definition: obj.h:787
One component in a YANG list unique target.
Definition: obj.h:794
ncx_error_t tkerr
file and line info for compiler
Definition: obj.h:800
dlq_hdr_t compQ
Q of obj_unique_comp_t.
Definition: obj.h:797
dlq_hdr_t qhdr
queue header
Definition: obj.h:795
xmlChar * xpath
complete saved unique str
Definition: obj.h:796
boolean isconfig
T:constraint is on config.
Definition: obj.h:799
boolean seen
needed by yangdiff
Definition: obj.h:798
One YANG uses statement struct.
Definition: obj.h:967
boolean expand_done
expand done flag
Definition: obj.h:979
xmlChar * name
name of grouping to use
Definition: obj.h:969
ncx_status_t status
status-stmt
Definition: obj.h:978
xmlChar * ref
reference-stmt (not saved on server)
Definition: obj.h:975
grp_template_t * grp
const back-ptr to grouping
Definition: obj.h:976
xmlChar * descr
description-stmt (not saved on server)
Definition: obj.h:972
xmlChar * prefix
prefix present in uses-stmt
Definition: obj.h:968
dlq_hdr_t * datadefQ
Q of obj_template_t.
Definition: obj.h:977
token parsing chain (main parser control block)
Definition: tk.h:415
Discriminated union for all data typedefs.
Definition: typ.h:458
One YANG 'typedef' definition – top-level type template.
Definition: typ.h:477
gather node data into a simple struct.
Definition: xml_util.h:205
NCX Syntax Token Handler.
Parameter Type Handler.
object specific variants
Definition: obj.h:1274
XML Utilities.
XML namespace support.