yumapro  20.10-12
YumaPro SDK
yang_typ.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2008 - 2012, Andy Bierman, All Rights Reserved.
3  * Copyright (c) 2012 - 2021, YumaWorks, Inc., All Rights Reserved.
4  *
5  * Unless required by applicable law or agreed to in writing,
6  * software distributed under the License is distributed on an
7  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8  * KIND, either express or implied. See the License for the
9  * specific language governing permissions and limitations
10  * under the License.
11  */
12 #ifndef _H_yang_typ
13 #define _H_yang_typ
14 
15 /* FILE: yang_typ.h
16 *********************************************************************
17 * *
18 * P U R P O S E *
19 * *
20 *********************************************************************/
21 
27 /*********************************************************************
28 * *
29 * C H A N G E H I S T O R Y *
30 * *
31 *********************************************************************
32 
33 date init comment
34 ----------------------------------------------------------------------
35 15-nov-07 abb Begun; start from yang_parse.c
36 
37 */
38 
39 #ifndef _H_dlq
40 #include "dlq.h"
41 #endif
42 
43 #ifndef _H_grp
44 #include "grp.h"
45 #endif
46 
47 #ifndef _H_ncxtypes
48 #include "ncxtypes.h"
49 #endif
50 
51 #ifndef _H_status
52 #include "status.h"
53 #endif
54 
55 #ifndef _H_tk
56 #include "tk.h"
57 #endif
58 
59 #ifndef _H_yang
60 #include "yang.h"
61 #endif
62 
63 #ifdef __cplusplus
64 extern "C" {
65 #endif
66 
67 
68 /********************************************************************
69 * *
70 * T Y P E S *
71 * *
72 *********************************************************************/
73 
74 
75 /********************************************************************
76 * *
77 * F U N C T I O N S *
78 * *
79 *********************************************************************/
80 
107 extern status_t
108  yang_typ_consume_type (yang_pcb_t *pcb,
109  tk_chain_t *tkc,
110  ncx_module_t *mod,
111  typ_def_t *intypdef);
112 
113 
129 extern status_t
130  yang_typ_consume_metadata_type (yang_pcb_t *pcb,
131  tk_chain_t *tkc,
132  ncx_module_t *mod,
133  typ_def_t *intypdef);
134 
135 
153 extern status_t
154  yang_typ_consume_typedef (yang_pcb_t *pcb,
155  tk_chain_t *tkc,
156  ncx_module_t *mod,
157  dlq_hdr_t *que);
158 
159 
194 extern status_t
195  yang_typ_resolve_typedefs (yang_pcb_t *pcb,
196  tk_chain_t *tkc,
197  ncx_module_t *mod,
198  dlq_hdr_t *typeQ,
199  obj_template_t *parent);
200 
201 
216 extern status_t
217  yang_typ_resolve_typedefs_final (tk_chain_t *tkc,
218  ncx_module_t *mod,
219  dlq_hdr_t *typeQ);
220 
221 
257 extern status_t
258  yang_typ_resolve_typedefs_grp (yang_pcb_t *pcb,
259  tk_chain_t *tkc,
260  ncx_module_t *mod,
261  dlq_hdr_t *typeQ,
262  obj_template_t *parent,
263  grp_template_t *grp);
264 
265 
298 extern status_t
299  yang_typ_resolve_type (yang_pcb_t *pcb,
300  tk_chain_t *tkc,
301  ncx_module_t *mod,
302  typ_def_t *typdef,
303  const xmlChar *defval,
304  obj_template_t *obj);
305 
306 
325 extern status_t
326  yang_typ_resolve_type_final (tk_chain_t *tkc,
327  ncx_module_t *mod,
328  typ_def_t *typdef,
329  const xmlChar *name,
330  const xmlChar *defval,
331  obj_template_t *obj);
332 
333 
345 extern status_t
346  yang_typ_rangenum_ok (typ_def_t *typdef,
347  const ncx_num_t *num);
348 
349 
359 extern boolean
360  yang_typ_enubit_enabled (typ_enum_t *enubit);
361 
362 
372 extern boolean
373  yang_typ_identity_enabled (ncx_identity_t *id);
374 
375 
385 extern status_t
386  yang_typ_resolve_leafref (yang_pcb_t *pcb,
387  tk_chain_t *tkc,
388  ncx_module_t *mod,
389  obj_template_t *testobj);
390 
391 
395 #ifdef __cplusplus
396 } /* end extern 'C' */
397 #endif
398 
399 #endif /* _H_yang_typ */
yang_consume_pid
status_t yang_consume_pid(tk_chain_t *tkc, ncx_module_t *mod, xmlChar **prefixstr, xmlChar **str, boolean *dupflag, dlq_hdr_t *appinfoQ)
consume one [prefix:]name clause
Definition: yang.c:967
typ_get_basetype
ncx_btype_t typ_get_basetype(const typ_def_t *typdef)
Get the final base type of the specified typ_def_t.
Definition: typ.c:1764
TK_CUR
#define TK_CUR(T)
return the current token
Definition: tk.h:122
ERR_NCX_SKIPPED
@ ERR_NCX_SKIPPED
2001
Definition: status_enum.h:551
xml_strlen
uint32 xml_strlen(const xmlChar *str)
Get the String len for xmlChar.
Definition: xml_util.c:1406
xpath_yang_validate_path_ex
status_t xpath_yang_validate_path_ex(ncx_module_t *mod, obj_template_t *obj, xpath_pcb_t *pcb, boolean schemainst, obj_template_t **leafobj, boolean logerrors, boolean is_xpath)
Validate the previously parsed leafref path (extended)
Definition: xpath_yang.c:2395
yang_typ_identity_enabled
boolean yang_typ_identity_enabled(ncx_identity_t *id)
Check if an identity-stmt is enabled.
Definition: yang_typ.c:5639
TK_TT_TSTRING
@ TK_TT_TSTRING
token string
Definition: tk.h:319
ERR_NCX_NOT_IN_RANGE
@ ERR_NCX_NOT_IN_RANGE
288
Definition: status_enum.h:331
ERR_NCX_MISSING_REFTARGET
@ ERR_NCX_MISSING_REFTARGET
366
Definition: status_enum.h:409
ncx_convert_tkc_dec64
status_t ncx_convert_tkc_dec64(tk_chain_t *tkc, uint8 digits, ncx_num_t *val)
Convert the current token in a token chain to a ncx_num_t struct, expecting NCX_BT_DECIMAL64.
Definition: ncx_num.c:2699
ncx_find_identity
ncx_identity_t * ncx_find_identity(ncx_module_t *mod, const xmlChar *name, boolean useall)
Find a ncx_identity_t struct in the module and perhaps any of its submodules.
Definition: ncx.c:6082
ncx_feature.h
NCX Module Library YANG Feature Utility Functions.
ncx_consume_appinfo
status_t ncx_consume_appinfo(tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *appinfoQ)
Check if an appinfo clause is present.
Definition: ncx_appinfo.c:761
ERR_NCX_BIT_POS_ORDER
@ ERR_NCX_BIT_POS_ORDER
1023
Definition: status_enum.h:512
NCX_BT_INT32
@ NCX_BT_INT32
int32
Definition: ncxtypes.h:209
ncx_appinfo.h
NCX Module Library Extension (Application Info) Utility Functions.
typ_ok_for_union
boolean typ_ok_for_union(ncx_yang_version_t langver, ncx_btype_t btyp)
Check if the base type is okay to use in an union decl.
Definition: typ.c:4571
xpath_free_pcb
void xpath_free_pcb(xpath_pcb_t *pcb)
Free a malloced XPath parser control block.
Definition: xpath.c:2963
xml_strncpy
uint32 xml_strncpy(xmlChar *copyTo, const xmlChar *copyFrom, uint32 maxlen)
String copy for xmlChar – checks for buffer overflow.
Definition: xml_util.c:1518
yang_typ_resolve_type
status_t yang_typ_resolve_type(yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, typ_def_t *typdef, const xmlChar *defval, obj_template_t *obj)
Resolve a type-stmt.
Definition: yang_typ.c:5488
TK_BKUP
#define TK_BKUP(T)
back-up the current token pointer
Definition: tk.h:112
tk_check_save_origstr
status_t tk_check_save_origstr(tk_chain_t *tkc, tk_token_t *tk, const void *field)
Check the docmode and the specified token; Save a tk_origptr_t if needed with the field address.
Definition: tk.c:4368
obj_get_leafref_class
ncx_leafref_class_t obj_get_leafref_class(obj_template_t *obj)
Get the leafref class for a leafref object.
Definition: obj.c:17293
NCX_BT_BINARY
@ NCX_BT_BINARY
binary (base64)
Definition: ncxtypes.h:218
obj_get_typdef
typ_def_t * obj_get_typdef(obj_template_t *obj)
Get the typdef for the leaf or leaf-list.
Definition: obj.c:11991
typ_set_fraction_digits
status_t typ_set_fraction_digits(typ_def_t *typdef, uint8 digits)
Set the fraction-digits field from the typdef chain.
Definition: typ.c:5288
typ_is_xpath_string
boolean typ_is_xpath_string(const typ_def_t *typdef)
Find the ncx:xpath extension within the specified typdef chain.
Definition: typ.c:2686
yang_consume_int32
status_t yang_consume_int32(tk_chain_t *tkc, ncx_module_t *mod, int32 *num, boolean *dupflag, dlq_hdr_t *appinfoQ)
consume one int32 clause Parse the int32 based parameter statement
Definition: yang.c:1848
xml_strdup
xmlChar * xml_strdup(const xmlChar *copyFrom)
String duplicate for xmlChar.
Definition: xml_util.c:1553
ncx_warning_enabled
boolean ncx_warning_enabled(status_t res)
Check if a specific status_t code is enabled.
Definition: ncx.c:9394
yang_typ_consume_type
status_t yang_typ_consume_type(yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, typ_def_t *intypdef)
Consume a type-stmt.
Definition: yang_typ.c:4947
ERR_NCX_WRONG_TKVAL
@ ERR_NCX_WRONG_TKVAL
246
Definition: status_enum.h:285
ncx_valid_name2
boolean ncx_valid_name2(const xmlChar *str)
Check if an xmlChar string is a valid NCX name.
Definition: ncx.c:7637
typ_set_leafref_class_key
void typ_set_leafref_class_key(typ_def_t *typdef)
Change the leafref class for the type to NCX_LEAFREF_CLASS_KEY.
Definition: typ.c:4857
yang_typ_resolve_typedefs
status_t yang_typ_resolve_typedefs(yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *typeQ, obj_template_t *parent)
Resovlve the typeQ of typedefs.
Definition: yang_typ.c:5305
ncx_resolve_appinfoQ
status_t ncx_resolve_appinfoQ(yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *appinfoQ)
Validate all the appinfo clauses present in the specified Q.
Definition: ncx_appinfo.c:877
ERR_NCX_DEF_NOT_FOUND
@ ERR_NCX_DEF_NOT_FOUND
250
Definition: status_enum.h:289
typ_get_parent_typdef
typ_def_t * typ_get_parent_typdef(typ_def_t *typdef)
Get the next typ_def_t in a chain – for NCX_CL_NAMED chained typed.
Definition: typ.c:2069
log_error
void log_error(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_ERROR log entry.
yang_feature.h
YANG feature statement support.
NCX_SR_PATTERN
@ NCX_SR_PATTERN
pattern restriction
Definition: ncxtypes.h:325
ncx_get_modname
const xmlChar * ncx_get_modname(const ncx_module_t *mod)
Get the main module name.
Definition: ncx.c:4834
NCX_BT_INSTANCE_ID
@ NCX_BT_INSTANCE_ID
instance-identifier
Definition: ncxtypes.h:219
xml_util.h
XML Utilities.
xpath_set_load_import
void xpath_set_load_import(xpath_pcb_t *pcb, void *yang_pcb)
Set the PCB in load import mode.
Definition: xpath.c:4721
NCX_BT_IDREF
@ NCX_BT_IDREF
identityref
Definition: ncxtypes.h:222
typ_get_rangeQ_con
dlq_hdr_t * typ_get_rangeQ_con(typ_def_t *typdef)
Return the rangeQ for the given typdef Do not follow typdef chains.
Definition: typ.c:1090
obj_get_parent
obj_template_t * obj_get_parent(obj_template_t *obj)
Get the parent of the current object.
Definition: obj.c:12679
xpath_new_pcb
xpath_pcb_t * xpath_new_pcb(const xmlChar *xpathstr, xpath_getvar_fn_t getvar_fn)
malloc a new XPath parser control block
Definition: xpath.c:2739
TK_CUR_LNUM
#define TK_CUR_LNUM(T)
return the current line number
Definition: tk.h:179
typ_is_number
boolean typ_is_number(ncx_btype_t btyp)
Check if the base type is numeric.
Definition: typ.c:4063
NCX_BT_LEAFREF
@ NCX_BT_LEAFREF
leafref (needs special processing)
Definition: ncxtypes.h:221
obj_get_mod
ncx_module_t * obj_get_mod(obj_template_t *obj)
Get the module pointer for this object.
Definition: obj.c:12218
tk.h
NCX Syntax Token Handler.
typ_set_new_named
status_t typ_set_new_named(typ_def_t *typdef, ncx_btype_t btyp)
Create a new typdef inside a typ_named_t struct inside a typ_def_t.
Definition: typ.c:664
log_debug3
void void void void void void void void void void void log_debug3(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_DEBUG3 log entry.
ncx_num.h
NCX Module Library Number Utility Functions.
typ_idref_t::baseprefix
xmlChar * baseprefix
identity base prefix
Definition: typ.h:353
typ_next_enumdef
typ_enum_t * typ_next_enumdef(typ_enum_t *enumdef)
Get the next enum def struct.
Definition: typ.c:3247
yang_consume_strclause
status_t yang_consume_strclause(tk_chain_t *tkc, ncx_module_t *mod, xmlChar **str, boolean *dupflag, dlq_hdr_t *appinfoQ)
consume one normative string clause
Definition: yang.c:1047
typ_new_idref
typ_idref_t * typ_new_idref(void)
Malloc a new idref.
Definition: typ.c:5574
ncx_find_type_que
typ_template_t * ncx_find_type_que(const dlq_hdr_t *typeQ, const xmlChar *typname)
ncx_find_type_que
Definition: ncx.c:3620
NCX_NT_TYP
@ NCX_NT_TYP
typ_template_t
Definition: ncxtypes.h:274
yang_typ_consume_typedef
status_t yang_typ_consume_typedef(yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *que)
Consume a typedef-stmt.
Definition: yang_typ.c:5016
typ_new_pattern
typ_pattern_t * typ_new_pattern(const xmlChar *pat_str, boolean ocmode)
Malloc and init a pattern struct.
Definition: typ.c:4150
ncx_find_type
typ_template_t * ncx_find_type(ncx_module_t *mod, const xmlChar *typname, boolean useall)
Check if a typ_template_t in the mod->typeQ.
Definition: ncx.c:3522
ERR_LAST_SYS_ERR
@ ERR_LAST_SYS_ERR
124 – not really used
Definition: status_enum.h:236
XPATH_SET_DISABLED_OBJ_OK
#define XPATH_SET_DISABLED_OBJ_OK(P)
set the disabled_obj_ok flag
Definition: xpath.h:328
obj_is_key
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:14278
NCX_BT_ANYDATA
@ NCX_BT_ANYDATA
YANG 1.1 anydata.
Definition: ncxtypes.h:229
dlq_lastEntry
#define dlq_lastEntry(listP)
get the last entry in the queue list
Definition: dlq.h:352
ERR_NCX_DUP_ENTRY
@ ERR_NCX_DUP_ENTRY
224
Definition: status_enum.h:263
ncxconst.h
Contains NCX constants.
ncx_is_min
boolean ncx_is_min(const ncx_num_t *num, ncx_btype_t btyp)
Return TRUE if the specified number is the min value for its type.
Definition: ncx_num.c:2522
tk_retokenize_cur_string
status_t tk_retokenize_cur_string(tk_chain_t *tkc, ncx_module_t *mod)
The current token is some sort of a string Reparse it according to the full YANG token list,...
Definition: tk.c:3865
xml_isspace
boolean xml_isspace(uint32 ch)
Check if an xmlChar is a space char.
Definition: xml_util.c:1901
typ_get_correct_enumdef
typ_def_t * typ_get_correct_enumdef(typ_def_t *typdef)
Get the typ_enum_t to use.
Definition: typ.c:3469
ncx_is_max
boolean ncx_is_max(const ncx_num_t *num, ncx_btype_t btyp)
Return TRUE if the specified number is the max value for its type.
Definition: ncx_num.c:2579
TK_ADV
#define TK_ADV(T)
advance the current token pointer
Definition: tk.h:107
NCX_LEAFREF_CLASS_GLOBAL
@ NCX_LEAFREF_CLASS_GLOBAL
the global class will have the same result for any context node (static, absolute path) /foo/bar/baz
Definition: ncxtypes.h:1293
typ_clean_typdef
void typ_clean_typdef(typ_def_t *typdef)
Clean a typ_def_t struct, but do not delete it.
Definition: typ.c:488
ncx_print_errormsg
void ncx_print_errormsg(tk_chain_t *tkc, ncx_module_t *mod, status_t res)
Print an parse error message to STDOUT.
Definition: ncx.c:7048
yang_consume_string
status_t yang_consume_string(tk_chain_t *tkc, ncx_module_t *mod, xmlChar **field)
consume 1 string token
Definition: yang.c:227
TK_CUR_VAL
#define TK_CUR_VAL(T)
return the current token value
Definition: tk.h:128
typ_free_enum
void typ_free_enum(typ_enum_t *en)
Free a typ_enum_t struct.
Definition: typ.c:848
TK_CUR_LPOS
#define TK_CUR_LPOS(T)
return the current line position
Definition: tk.h:182
NCX_BT_UINT8
@ NCX_BT_UINT8
uint8
Definition: ncxtypes.h:211
yang_typ_resolve_typedefs_grp
status_t yang_typ_resolve_typedefs_grp(yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *typeQ, obj_template_t *parent, grp_template_t *grp)
Resolve typedefs in a grouping (final pass)
Definition: yang_typ.c:5423
typ_get_range_type
ncx_btype_t typ_get_range_type(ncx_btype_t btyp)
Get the correct typ_rangedef_t data type for the indicated base type.
Definition: typ.c:1718
ERR_NCX_ENTRY_EXISTS
@ ERR_NCX_ENTRY_EXISTS
223
Definition: status_enum.h:262
log_debug2
void void void void void void void void void log_debug2(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_DEBUG2 log entry.
typ_set_named_typdef
void typ_set_named_typdef(typ_def_t *typdef, typ_template_t *imptyp)
Set the fields in a named typedef (used by YANG parser)
Definition: typ.c:532
def_reg.h
Definition Registry module.
obj_in_list
boolean obj_in_list(const obj_template_t *obj)
Check if object is nested within a list.
Definition: obj.c:13362
typ_idref_t::modname
const xmlChar * modname
back-ptr to the main mod name
Definition: typ.h:356
NCX_BT_ENUM
@ NCX_BT_ENUM
enumeration
Definition: ncxtypes.h:204
NO_ERR
@ NO_ERR
000
Definition: status_enum.h:188
xpath.h
Schema and data model Xpath search support.
typ_compile_pattern
status_t typ_compile_pattern(typ_pattern_t *pat)
Compile a pattern as into a regex_t struct.
Definition: typ.c:4232
TK_TT_RBRACE
@ TK_TT_RBRACE
right brace '}'
Definition: tk.h:287
typ_ok
boolean typ_ok(const typ_def_t *typdef)
Check if the typdef chain has any errors.
Definition: typ.c:4629
NCX_CL_SIMPLE
@ NCX_CL_SIMPLE
a restriction of a base type
Definition: ncxtypes.h:245
yang_typ_resolve_type_final
status_t yang_typ_resolve_type_final(tk_chain_t *tkc, ncx_module_t *mod, typ_def_t *typdef, const xmlChar *name, const xmlChar *defval, obj_template_t *obj)
Resolve a type-stmt (final pass)
Definition: yang_typ.c:5529
NCX_BT_UINT64
@ NCX_BT_UINT64
uint64
Definition: ncxtypes.h:214
typ_get_first_idref
typ_idref_t * typ_get_first_idref(typ_def_t *typdef)
Get the first idref field if this is an NCX_BT_IDREF typdef.
Definition: typ.c:5136
ERR_NCX_WRONG_TKTYPE
@ ERR_NCX_WRONG_TKTYPE
245
Definition: status_enum.h:284
NCX_SR_NONE
@ NCX_SR_NONE
not set
Definition: ncxtypes.h:324
yang_typ.h
YANG Module parser typedef and type statement support.
ncx_consume_token
status_t ncx_consume_token(tk_chain_t *tkc, ncx_module_t *mod, tk_type_t ttyp)
Consume the next token which should be a 1 or 2 char token without any value.
Definition: ncx.c:7901
NCX_SR_ENUM
@ NCX_SR_ENUM
enumeration restriction
Definition: ncxtypes.h:326
yang_feature_eval_iffeatureQ
boolean yang_feature_eval_iffeatureQ(ncx_module_t *mod, dlq_hdr_t *iffQ)
Evaluate a Q ofif-feature expressions.
Definition: yang_feature.c:1697
TK_CUR_MOD
#define TK_CUR_MOD(T)
return the current token module qualifier value
Definition: tk.h:134
typ_get_fraction_digits
uint8 typ_get_fraction_digits(const typ_def_t *typdef)
Get the fraction-digits field from the typdef chain typdef must be an NCX_BT_DECIMAL64 or 0 will be r...
Definition: typ.c:5253
XP_SRC_LEAFREF
@ XP_SRC_LEAFREF
leafref path
Definition: xpath.h:375
log_debug4
void void void void void void void void void void void void void log_debug4(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_DEBUG4 log entry.
obj_get_name
const xmlChar * obj_get_name(const obj_template_t *obj)
Get the name field for this obj.
Definition: obj.c:10511
ERR_NCX_OPERATION_FAILED
@ ERR_NCX_OPERATION_FAILED
274
Definition: status_enum.h:315
LOGDEBUG2
#define LOGDEBUG2
Check if at least log-level=debug2.
Definition: log.h:292
TK_CUR_LEN
#define TK_CUR_LEN(T)
return the current token value length
Definition: tk.h:131
log_warn
void void void log_warn(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_WARN log entry.
ERR_INTERNAL_VAL
@ ERR_INTERNAL_VAL
004
Definition: status_enum.h:194
ncx_decode_num_ex
status_t ncx_decode_num_ex(const xmlChar *numstr, ncx_btype_t btyp, ncx_num_t *retnum, typ_def_t *typdef)
Handle some sort of number string EXTENDED.
Definition: ncx_num.c:1312
obj_set_named_type
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:8517
ERR_NCX_INVALID_RANGE
@ ERR_NCX_INVALID_RANGE
248
Definition: status_enum.h:287
ncx_get_status_string
const xmlChar * ncx_get_status_string(ncx_status_t status)
Get the string for the enum value of a ncx_status_t enum.
Definition: ncx.c:6951
ERR_NCX_WRONG_TYPE
@ ERR_NCX_WRONG_TYPE
231
Definition: status_enum.h:270
yang_consume_boolean
status_t yang_consume_boolean(tk_chain_t *tkc, ncx_module_t *mod, boolean *boolval, boolean *dupflag, dlq_hdr_t *appinfoQ)
consume one boolean clause Parse the boolean parameter based statement
Definition: yang.c:1756
typ_get_name
const xmlChar * typ_get_name(const typ_def_t *typdef)
Get the name for the specified typdef.
Definition: typ.c:1871
NCX_BT_INT64
@ NCX_BT_INT64
int64
Definition: ncxtypes.h:210
ERR_NCX_INVALID_VALUE
@ ERR_NCX_INVALID_VALUE
258
Definition: status_enum.h:299
yang_find_imp_identity
status_t yang_find_imp_identity(yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, const xmlChar *prefix, const xmlChar *name, ncx_error_t *tkerr, ncx_identity_t **identity)
Find the specified imported identity.
Definition: yang.c:2415
NCX_BT_EMPTY
@ NCX_BT_EMPTY
empty
Definition: ncxtypes.h:205
ERR_NCX_WRONG_LEN
@ ERR_NCX_WRONG_LEN
222
Definition: status_enum.h:261
log_debug_append
void void void void void void void void log_debug_append(const char *fstr,...) __attribute__((format(printf
Append to a LOG_DEBUG_DEBUG log entry.
NCX_BT_UINT16
@ NCX_BT_UINT16
uint16
Definition: ncxtypes.h:212
typ_get_range_con
typ_range_t * typ_get_range_con(typ_def_t *typdef)
Return the range struct for the given typdef Do not follow typdef chains.
Definition: typ.c:1219
ERR_INTERNAL_MEM
@ ERR_INTERNAL_MEM
003
Definition: status_enum.h:193
yang_typ_resolve_leafref
status_t yang_typ_resolve_leafref(yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, obj_template_t *testobj)
Resolve the typdef in a leafref leaf or leaf-list.
Definition: yang_typ.c:5674
get_error_string
const char * get_error_string(status_t res)
Get the error message for a specific internal error.
Definition: status.c:239
ERR_INTERNAL_PTR
@ ERR_INTERNAL_PTR
002
Definition: status_enum.h:192
typ_set_strrest
void typ_set_strrest(typ_def_t *typdef, ncx_strrest_t strrest)
Set the string restrinvtion type set for this typdef.
Definition: typ.c:1559
yang.h
YANG Module parser utilities.
log_debug
void void void void void void void log_debug(const char *fstr,...) __attribute__((format(printf
Generate a new LOG_DEBUG_DEBUG log entry.
typ.h
Parameter Type Handler.
TK_CUR_STR
#define TK_CUR_STR(T)
return TRUE if the current token type is a string
Definition: tk.h:140
ERR_NCX_ENUM_VAL_ORDER
@ ERR_NCX_ENUM_VAL_ORDER
1022
Definition: status_enum.h:511
tk_get_btype_sym
const char * tk_get_btype_sym(ncx_btype_t btyp)
Get the symbolic token symbol for one of the base types.
Definition: tk.c:3324
val_range_ok
status_t val_range_ok(typ_def_t *typdef, ncx_btype_t btyp, const ncx_num_t *num)
Check a number to see if it is in range or not Could be a number or size range.
Definition: val.c:4181
yangconst.h
Contains YANG constants separated to prevent H file include loops.
TK_CUR_MODLEN
#define TK_CUR_MODLEN(T)
return the current token module qualifier value length
Definition: tk.h:137
val_simval_ok_max2
status_t val_simval_ok_max2(typ_def_t *typdef, const xmlChar *simval, ncx_errinfo_t **errinfo, ncx_module_t *mod, boolean logerrors, boolean nocond)
check any simple type to see if it is valid, but do not retrieve the value; used to check the default...
Definition: val.c:4517
yang_consume_descr
status_t yang_consume_descr(tk_chain_t *tkc, ncx_module_t *mod, xmlChar **str, boolean *dupflag, dlq_hdr_t *appinfoQ)
consume one descriptive string clause
Definition: yang.c:888
NCX_STATUS_CURRENT
@ NCX_STATUS_CURRENT
current (default)
Definition: ncxtypes.h:420
typ_new_rangedef
typ_rangedef_t * typ_new_rangedef(void)
Alloc and Init a typ_rangedef_t struct (range-stmt)
Definition: typ.c:875
ERR_NCX_EOF
@ ERR_NCX_EOF
244
Definition: status_enum.h:283
dlq_nextEntry
#define dlq_nextEntry(nodeP)
get the next queue entry after the current entry
Definition: dlq.h:265
ncx_compare_nums
int32 ncx_compare_nums(const ncx_num_t *num1, const ncx_num_t *num2, ncx_btype_t btyp)
Compare 2 ncx_num_t union contents.
Definition: ncx_num.c:242
ncx_get_gen_root
obj_template_t * ncx_get_gen_root(void)
Get the object template for the NCX generic root container.
Definition: ncx.c:6720
yang_find_imp_typedef
status_t yang_find_imp_typedef(yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, const xmlChar *prefix, const xmlChar *name, ncx_error_t *tkerr, typ_template_t **typ)
Find the specified imported typedef.
Definition: yang.c:2090
TK_TT_BAR
@ TK_TT_BAR
bar '|'
Definition: tk.h:295
typ_new_unionnode
typ_unionnode_t * typ_new_unionnode(typ_template_t *typ)
Alloc and Init a typ_unionnode_t struct.
Definition: typ.c:3896
typ_new_template
typ_template_t * typ_new_template(void)
Malloc and initialize the fields in a typ_template_t.
Definition: typ.c:282
TK_TT_SEMICOL
@ TK_TT_SEMICOL
semi-colon ';'
Definition: tk.h:288
yang_consume_pid_string
status_t yang_consume_pid_string(tk_chain_t *tkc, ncx_module_t *mod, xmlChar **prefix, xmlChar **field)
consume an identifier-ref-str token
Definition: yang.c:581
ncx_set_error
void ncx_set_error(ncx_error_t *tkerr, ncx_module_t *mod, uint32 linenum, uint32 linepos)
Set the fields in an ncx_error_t struct.
Definition: ncx.c:9746
obj_get_status
ncx_status_t obj_get_status(const obj_template_t *obj)
Get the status field for this obj.
Definition: obj.c:10752
NCX_BT_UNION
@ NCX_BT_UNION
union (needs special processing)
Definition: ncxtypes.h:220
typ_get_qual_typdef
typ_def_t * typ_get_qual_typdef(typ_def_t *typdef, ncx_squal_t squal)
Get the final typ_def_t of the specified typ_def_t based on the qualifier.
Definition: typ.c:2403
xpath_yang.h
YANG-specific Xpath support.
ERR_NCX_PREFIX_NOT_FOUND
@ ERR_NCX_PREFIX_NOT_FOUND
331
Definition: status_enum.h:374
typ_get_strrest
ncx_strrest_t typ_get_strrest(const typ_def_t *typdef)
Get the string restrinvtion type set for this typdef.
Definition: typ.c:1515
typ_free_pattern
void typ_free_pattern(typ_pattern_t *pat)
Free a pattern struct.
Definition: typ.c:4188
typ_first_enumdef
typ_enum_t * typ_first_enumdef(typ_def_t *typdef)
Get the first enum def struct looks past named typedefs to base typedef.
Definition: typ.c:3219
log_debug4_append
void void void void void void void void void void void void void void log_debug4_append(const char *fstr,...) __attribute__((format(printf
Append to a LOG_DEBUG_DEBUG4 log entry.
yang_typ_consume_metadata_type
status_t yang_typ_consume_metadata_type(yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, typ_def_t *intypdef)
Consume a type-stmt for metadata.
Definition: yang_typ.c:4981
yang_consume_error_stmts
status_t yang_consume_error_stmts(tk_chain_t *tkc, ncx_module_t *mod, ncx_errinfo_t *errinfo, dlq_hdr_t *appinfoQ, boolean allow_modifier, boolean *gotinverted)
consume the range.
Definition: yang.c:752
obj_get_mod_name
const xmlChar * obj_get_mod_name(const obj_template_t *obj)
Get the module name for this object.
Definition: obj.c:12176
NCX_BT_ANY
@ NCX_BT_ANY
anyxml
Definition: ncxtypes.h:202
typ_get_first_pattern
typ_pattern_t * typ_get_first_pattern(typ_def_t *typdef)
Get the first pattern struct for a typdef.
Definition: typ.c:4272
ERR_NCX_IMP_NOT_FOUND
@ ERR_NCX_IMP_NOT_FOUND
321
Definition: status_enum.h:364
ncx_get_ocpattern_mode
boolean ncx_get_ocpattern_mode(const ncx_module_t *mod)
Get the openconfig pattern mode.
Definition: ncx.c:13869
typ_idref_t::base
ncx_identity_t * base
back-ptr to base (if found )
Definition: typ.h:355
ncx_mod_missing_err
void ncx_mod_missing_err(tk_chain_t *tkc, ncx_module_t *mod, const char *stmtstr, const char *expstr)
Print an error for wrong token, mandatory sub-statement is missing.
Definition: ncx.c:7316
ncx_convert_tkcnum
status_t ncx_convert_tkcnum(tk_chain_t *tkc, ncx_btype_t btyp, ncx_num_t *val)
Convert the current token in a token chain to a ncx_num_t struct.
Definition: ncx_num.c:2640
xml_strcmp
int xml_strcmp(const xmlChar *s1, const xmlChar *s2)
String compare for xmlChar.
Definition: xml_util.c:1746
ERR_NCX_MISSING_TYPE
@ ERR_NCX_MISSING_TYPE
322
Definition: status_enum.h:365
TK_TT_LBRACE
@ TK_TT_LBRACE
left brace '{'
Definition: tk.h:286
LOGDEBUG4
#define LOGDEBUG4
Check if at least log-level=debug4.
Definition: log.h:302
log.h
NCX System Logging Manager.
ncxtypes.h
YANG module data structures Many internal representations of YANG module constructs.
NCX_CL_BASE
@ NCX_CL_BASE
a built-in base type
Definition: ncxtypes.h:244
typ_normalize_rangeQ
void typ_normalize_rangeQ(dlq_hdr_t *rangeQ, ncx_btype_t btyp)
Start with a valid rangedef chain.
Definition: typ.c:939
ERR_NCX_INVALID_STATUS_REF
@ ERR_NCX_INVALID_STATUS_REF
416
Definition: status_enum.h:459
ncx_find_import
ncx_import_t * ncx_find_import(const ncx_module_t *mod, const xmlChar *module)
Search the importQ for a specified module name.
Definition: ncx.c:5541
LOGDEBUG
#define LOGDEBUG
Check if at least log-level=debug.
Definition: log.h:287
val_simval_ok_max3
status_t val_simval_ok_max3(typ_def_t *typdef, const xmlChar *simval, ncx_errinfo_t **errinfo, ncx_module_t *mod, boolean logerrors, boolean nocond, boolean is_defval)
check any simple type to see if it is valid, but do not retrieve the value; used to check the default...
Definition: val.c:4561
typ_new_enum2
typ_enum_t * typ_new_enum2(xmlChar *name)
Alloc and Init a typ_enum_t struct.
Definition: typ.c:821
typ_get_basetype2
ncx_btype_t typ_get_basetype2(typ_def_t *typdef)
Get the final base type of the specified typ_def_t.
Definition: typ.c:1817
yang_consume_id_string
status_t yang_consume_id_string(tk_chain_t *tkc, ncx_module_t *mod, xmlChar **field)
consume an identifier-str token
Definition: yang.c:510
typ_free_template
void typ_free_template(typ_template_t *typ)
Scrub the memory in a typ_template_t by freeing all the sub-fields and then freeing the entire struct...
Definition: typ.c:311
xpath_clone_pcb
xpath_pcb_t * xpath_clone_pcb(const xpath_pcb_t *srcpcb)
Clone an XPath PCB.
Definition: xpath.c:2822
typ_unset_named_typdef
void typ_unset_named_typdef(typ_def_t *typdef)
UnSet the typ link in a named typedef (used by YANG parser)
Definition: typ.c:557
xpath_yang_validate_path_dev
status_t xpath_yang_validate_path_dev(ncx_module_t *mod, obj_template_t *obj, xpath_pcb_t *pcb, boolean schemainst, obj_template_t **leafobj, boolean logerrors, boolean is_xpath, ncx_module_t *rootmod)
Validate the previously parsed leafref path (deviation)
Definition: xpath_yang.c:2465
NCX_SR_BIT
@ NCX_SR_BIT
bits restriction
Definition: ncxtypes.h:327
yang_feature_consume_iffeature
status_t yang_feature_consume_iffeature(tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *iffeatureQ, dlq_hdr_t *appinfoQ)
Consume an if-feature-stmt.
Definition: yang_feature.c:1311
ERR_NCX_OVERLAP_RANGE
@ ERR_NCX_OVERLAP_RANGE
249
Definition: status_enum.h:288
typ_get_base_typdef
typ_def_t * typ_get_base_typdef(typ_def_t *typdef)
Get the base typ_def_t in a chain – for NCX_CL_NAMED chained typed.
Definition: typ.c:2227
NCX_BT_BITS
@ NCX_BT_BITS
bits
Definition: ncxtypes.h:203
ncx_list.h
NCX Module Library List Utility Functions.
NCX_BT_FLOAT64
@ NCX_BT_FLOAT64
hidden: just for XPath
Definition: ncxtypes.h:216
NCX_BT_UINT32
@ NCX_BT_UINT32
uint32
Definition: ncxtypes.h:213
xpath_yang_parse_path_ex
status_t xpath_yang_parse_path_ex(tk_chain_t *tkc, ncx_module_t *mod, xpath_source_t source, xpath_pcb_t *pcb, boolean logerrors, ncx_leafref_class_t *leafref_class)
Parse the leafref path as a leafref path (extended)
Definition: xpath_yang.c:2133
typ_is_string
boolean typ_is_string(ncx_btype_t btyp)
Check if the base type is a simple string (not list)
Definition: typ.c:4097
dlq_empty
#define dlq_empty(listP)
check if queue list is empty
Definition: dlq.h:367
tk_get_yang_btype_id
ncx_btype_t tk_get_yang_btype_id(const xmlChar *buff, uint32 len)
Check if the specified string is a YANG builtin type name checks for valid YANG data type name.
Definition: tk.c:3241
typ_new_typdef
typ_def_t * typ_new_typdef(void)
Malloc and initialize the fields in a typ_def_t.
Definition: typ.c:354
ERR_NCX_NO_XPATH_NODES
@ ERR_NCX_NO_XPATH_NODES
1034
Definition: status_enum.h:523
TK_TT_RANGESEP
@ TK_TT_RANGESEP
range sep, parent node '..'
Definition: tk.h:307
typ_init_simple
void typ_init_simple(typ_def_t *tdef, ncx_btype_t btyp)
Init a typ_simple_t struct inside a typ_def_t.
Definition: typ.c:405
yang_consume_semiapp
status_t yang_consume_semiapp(tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *appinfoQ)
consume a stmtsep clause
Definition: yang.c:145
xpath_yang_parse_path
status_t xpath_yang_parse_path(tk_chain_t *tkc, ncx_module_t *mod, xpath_source_t source, xpath_pcb_t *pcb)
Parse the leafref path as a leafref path.
Definition: xpath_yang.c:2080
TK_TT_MSSTRING
@ TK_TT_MSSTRING
module-qualified scoped string
Definition: tk.h:321
typ_get_enumdef
typ_enum_t * typ_get_enumdef(typ_def_t *typdef, const xmlChar *valstr)
Get the typ_enum_t.
Definition: typ.c:3514
typ_set_xref_typdef
void typ_set_xref_typdef(typ_def_t *typdef, typ_def_t *target)
Set the target typdef for a leafref or instance-identifier NCX_BT_LEAFREF or NCX_BT_INSTANCE_ID.
Definition: typ.c:4971
obj_get_basetype
ncx_btype_t obj_get_basetype(const obj_template_t *obj)
Get the NCX base type enum for the object type.
Definition: obj.c:12077
typ_free_rangedef
void typ_free_rangedef(typ_rangedef_t *rv, ncx_btype_t btyp)
Free a typ_rangedef_t struct (range-stmt)
Definition: typ.c:898
dlq_firstEntry
#define dlq_firstEntry(listP)
get the first entry in the queue list
Definition: dlq.h:337
ncx_mod_exp_err
void ncx_mod_exp_err(tk_chain_t *tkc, ncx_module_t *mod, status_t result, const char *expstr)
Print an error for wrong token, expected a different token.
Definition: ncx.c:7220
ncx_set_num_max
void ncx_set_num_max(ncx_num_t *num, ncx_btype_t btyp)
Set a number to the maximum value for its type.
Definition: ncx_num.c:428
ncx.h
YANG module utility functions.
ncx_copy_num
status_t ncx_copy_num(const ncx_num_t *num1, ncx_num_t *num2, ncx_btype_t btyp)
Copy the contents of num1 to num2.
Definition: ncx_num.c:1451
NCX_SQUAL_RANGE
@ NCX_SQUAL_RANGE
search range
Definition: ncxtypes.h:315
typ_new_enum
typ_enum_t * typ_new_enum(const xmlChar *name)
Alloc and Init a typ_enum_t struct.
Definition: typ.c:784
obj.h
Data Object Support.
TK_CUR_TYP
#define TK_CUR_TYP(T)
return the current token type
Definition: tk.h:125
ERR_NCX_DEF_LOOP
@ ERR_NCX_DEF_LOOP
325
Definition: status_enum.h:368
grp.h
YANG Grouping Statement Handler.
typ_free_unionnode
void typ_free_unionnode(typ_unionnode_t *un)
Free a typ_unionnode_t struct.
Definition: typ.c:3921
ncx_set_num_min
void ncx_set_num_min(ncx_num_t *num, ncx_btype_t btyp)
Set a number to the minimum value for its type.
Definition: ncx_num.c:368
yang_typ_rangenum_ok
status_t yang_typ_rangenum_ok(typ_def_t *typdef, const ncx_num_t *num)
Check is a range number is OK.
Definition: yang_typ.c:5565
typ_idref_t
YANG identityref struct the value is an identity-stmt QName that has a base-stmt that resolves to the...
Definition: typ.h:351
CHK_EXIT
#define CHK_EXIT(res, retres)
used in parser routines to decide if processing can continue will exit the function if critical error...
Definition: yangconst.h:221
typ_get_new_named
typ_def_t * typ_get_new_named(typ_def_t *typdef)
Access the new typdef inside a typ_named_t struct inside a typ_def_t.
Definition: typ.c:707
obj_key_count
uint32 obj_key_count(const obj_template_t *obj)
Get the number of keys for this object.
Definition: obj.c:9637
typ_get_leafref_pcb
struct xpath_pcb_t_ * typ_get_leafref_pcb(typ_def_t *typdef)
Get the XPath parser control block for the leafref data type returns xpath_pcb_t but cannot import du...
Definition: typ.c:4795
yang_consume_uint32
status_t yang_consume_uint32(tk_chain_t *tkc, ncx_module_t *mod, uint32 *num, boolean *dupflag, dlq_hdr_t *appinfoQ)
consume one uint32 clause
Definition: yang.c:1931
dlq_enque
void dlq_enque(REG void *newP, REG dlq_hdrT *listP)
add a queue node to the end of a queue list Add newP to listP
Definition: dlq.c:246
ERR_NCX_WRONG_DATATYP
@ ERR_NCX_WRONG_DATATYP
285
Definition: status_enum.h:328
ncx_find_pre_import
ncx_import_t * ncx_find_pre_import(const ncx_module_t *mod, const xmlChar *prefix)
Search the importQ for a specified prefix value.
Definition: ncx.c:5619
yang_consume_status
status_t yang_consume_status(tk_chain_t *tkc, ncx_module_t *mod, ncx_status_t *status, boolean *dupflag, dlq_hdr_t *appinfoQ)
consume one status clause
Definition: yang.c:1115
TK_CUR_NUM
#define TK_CUR_NUM(T)
return TRUE if the current token type is a number
Definition: tk.h:151
typ_get_next_idref
typ_idref_t * typ_get_next_idref(typ_def_t *typdef, typ_idref_t *curdef)
Get the next idref field if this is an NCX_BT_IDREF typdef.
Definition: typ.c:5172
ncx_find_module
ncx_module_t * ncx_find_module(const xmlChar *modname, const xmlChar *revision)
Find a ncx_module_t in the ncx_sesmodQ.
Definition: ncx.c:3227
SET_ERROR
#define SET_ERROR(E)
macro SET_ERROR
Definition: status_enum.h:103
ERR_NCX_DATA_MISSING
@ ERR_NCX_DATA_MISSING
272
Definition: status_enum.h:313
NCX_CL_NAMED
@ NCX_CL_NAMED
a restriction of a named type
Definition: ncxtypes.h:247
NEED_EXIT
#define NEED_EXIT(res)
used in parser routines to decide if processing can continue does not return, just evaluates to TRUE ...
Definition: yangconst.h:234
NCX_BT_DECIMAL64
@ NCX_BT_DECIMAL64
decimal64
Definition: ncxtypes.h:215
OBJ_TYP_LEAF
@ OBJ_TYP_LEAF
leaf
Definition: obj.h:615
NCX_BT_STRING
@ NCX_BT_STRING
string
Definition: ncxtypes.h:217
ncx_resolve_appinfoQ_ex
status_t ncx_resolve_appinfoQ_ex(yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *appinfoQ, ncx_node_t node_type, void *node)
Validate all the appinfo clauses present in the specified Q.
Definition: ncx_appinfo.c:911
NCX_BT_INT8
@ NCX_BT_INT8
int8
Definition: ncxtypes.h:207
ERR_NCX_RESTRICT_NOT_ALLOWED
@ ERR_NCX_RESTRICT_NOT_ALLOWED
323
Definition: status_enum.h:366
yang_new_typ_stmt
yang_stmt_t * yang_new_typ_stmt(typ_template_t *typ)
Create a new YANG stmt node for a typedef.
Definition: yang.c:2956
obj_get_typestr
const xmlChar * obj_get_typestr(const obj_template_t *obj)
Get the name of the object type.
Definition: obj.c:11392
TK_TT_MSTRING
@ TK_TT_MSTRING
module-qualified token string
Definition: tk.h:320
obj_is_deleted_ex
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:14361
obj_is_root
boolean obj_is_root(const obj_template_t *obj)
Check if object is marked as a root object.
Definition: obj.c:14152
typ_init_named
void typ_init_named(typ_def_t *tdef)
Init a typ_named_t struct inside a typ_def_t.
Definition: typ.c:448
status.h
Global error messages for status code enumerations.
NCX_BT_NONE
@ NCX_BT_NONE
base type not set
Definition: ncxtypes.h:201
obj_find_type
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:8174
log_debug3_append
void void void void void void void void void void void void log_debug3_append(const char *fstr,...) __attribute__((format(printf
Append to a LOG_DEBUG_DEBUG3 log entry.
yang_feature_resolve_iffeatureQ2
status_t yang_feature_resolve_iffeatureQ2(yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *iffeatureQ)
Check the Q of if-feature statements for the specified object.
Definition: yang_feature.c:1519
dlq.h
dlq provides general double-linked list and queue support:
LOGDEBUG3
#define LOGDEBUG3
Check if at least log-level=debug3.
Definition: log.h:297
NCX_NT_TYPDEF_CB
@ NCX_NT_TYPDEF_CB
typ_def_t
Definition: ncxtypes.h:290
yang_typ_resolve_typedefs_final
status_t yang_typ_resolve_typedefs_final(tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *typeQ)
Resolve typedefs (final pass)
Definition: yang_typ.c:5357
typ_idref_t::basename
xmlChar * basename
identity base name
Definition: typ.h:354
yang_typ_enubit_enabled
boolean yang_typ_enubit_enabled(typ_enum_t *enubit)
Check if an enum or bit is enabled.
Definition: yang_typ.c:5605
NCX_BT_INT16
@ NCX_BT_INT16
int16
Definition: ncxtypes.h:208
IS_USR_ERR
#define IS_USR_ERR(E)
macro IS_USR_ERR(E)
Definition: status_enum.h:136