yumapro  20.10-13
YumaPro SDK
Collaboration diagram for Parser Utilities:

Data Structures

struct  yang_stmt_t_
 YANG statement node to track top-level statement order for doc output. More...
 
struct  yang_node_t_
 YANG node entry to track if a module has been used already. More...
 
struct  yang_import_ptr_t_
 YANG import pointer node to track all imports used. More...
 
struct  failed_ptr_t_
 pointer to failed modules to track all of them Prevents loading a broken module multiple times More...
 
struct  yang_pcb_t_
 YANG parser control block. More...
 

Enumerations

enum  yang_parsetype_t_ {
  YANG_PT_NONE,
  YANG_PT_TOP,
  YANG_PT_INCLUDE,
  YANG_PT_IMPORT
}
 YANG parser mode entry types. More...
 

Functions

status_t yang_consume_semiapp (tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *appinfoQ)
 consume a stmtsep clause More...
 
status_t yang_consume_string (tk_chain_t *tkc, ncx_module_t *mod, xmlChar **field)
 consume 1 string token More...
 
status_t yang_consume_keyword (tk_chain_t *tkc, ncx_module_t *mod, xmlChar **prefix, xmlChar **field)
 consume 1 YANG keyword or vendor extension keyword More...
 
status_t yang_consume_nowsp_string (tk_chain_t *tkc, ncx_module_t *mod, xmlChar **field)
 consume 1 string without any whitespace More...
 
status_t yang_consume_id_string (tk_chain_t *tkc, ncx_module_t *mod, xmlChar **field)
 consume an identifier-str token More...
 
status_t yang_consume_pid_string (tk_chain_t *tkc, ncx_module_t *mod, xmlChar **prefix, xmlChar **field)
 consume an identifier-ref-str token More...
 
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. More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
status_t yang_consume_ordered_by (tk_chain_t *tkc, ncx_module_t *mod, boolean *ordsys, boolean *dupflag, dlq_hdr_t *appinfoQ)
 consume one ordered-by clause More...
 
status_t yang_consume_max_elements (tk_chain_t *tkc, ncx_module_t *mod, uint32 *maxelems, boolean *dupflag, dlq_hdr_t *appinfoQ)
 consume one max-elements clause More...
 
status_t yang_consume_must (tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *mustQ, dlq_hdr_t *appinfoQ, boolean do_parse)
 consume one must-stmt into mustQ More...
 
status_t yang_consume_when (tk_chain_t *tkc, ncx_module_t *mod, obj_template_t *obj, boolean *whenflag)
 consume one when-stmt into obj->when More...
 
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 More...
 
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 More...
 
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 More...
 
status_t yang_consume_modifier (tk_chain_t *tkc, ncx_module_t *mod, boolean *dupflag, dlq_hdr_t *appinfoQ)
 consume one modifier-stmt More...
 
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. More...
 
status_t yang_find_imp_grouping (yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, const xmlChar *prefix, const xmlChar *name, ncx_error_t *tkerr, grp_template_t **grp)
 Find the specified imported grouping. More...
 
status_t yang_find_imp_extension (yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, const xmlChar *prefix, const xmlChar *name, ncx_error_t *tkerr, ext_template_t **ext)
 Find the specified imported extension. More...
 
status_t yang_find_imp_feature (yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, const xmlChar *prefix, const xmlChar *name, ncx_error_t *tkerr, ncx_feature_t **feature)
 Find the specified imported feature. More...
 
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. More...
 
void yang_check_obj_used (tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *typeQ, dlq_hdr_t *grpQ)
 generate warnings if local typedefs/groupings not used More...
 
void yang_check_imports_used (tk_chain_t *tkc, ncx_module_t *mod)
 generate warnings if imports not used More...
 
yang_node_t * yang_new_node (void)
 Create a new YANG parser node. More...
 
void yang_free_node (yang_node_t *node)
 Clean and delete the memory for a YANG parser node. More...
 
void yang_clean_nodeQ (dlq_hdr_t *que)
 Delete all the node entries in a YANG parser node Q. More...
 
yang_node_t * yang_find_node (const dlq_hdr_t *que, const xmlChar *name, const xmlChar *revision)
 Find a YANG parser node in the specified Q. More...
 
void yang_dump_nodeQ (dlq_hdr_t *que, const char *name)
 log_debug output for contents of the specified nodeQ More...
 
yang_pcb_t * yang_new_pcb (void)
 Create a new YANG parser control block. More...
 
void yang_free_pcb (yang_pcb_t *pcb)
 Delete a YANG parser control block. More...
 
yang_stmt_t * yang_new_typ_stmt (typ_template_t *typ)
 Create a new YANG stmt node for a typedef. More...
 
yang_stmt_t * yang_new_grp_stmt (grp_template_t *grp)
 Create a new YANG stmt node for a grouping. More...
 
yang_stmt_t * yang_new_ext_stmt (ext_template_t *ext)
 Create a new YANG stmt node for an extension. More...
 
yang_stmt_t * yang_new_obj_stmt (obj_template_t *obj)
 Create a new YANG stmt node for an object. More...
 
yang_stmt_t * yang_new_id_stmt (ncx_identity_t *identity)
 Create a new YANG stmt node for an identity. More...
 
yang_stmt_t * yang_new_feature_stmt (ncx_feature_t *feature)
 Create a new YANG stmt node for a feature definition. More...
 
yang_stmt_t * yang_new_deviation_stmt (obj_deviation_t *deviation)
 Create a new YANG stmt node for a deviation definition. More...
 
void yang_free_stmt (yang_stmt_t *stmt)
 Delete a YANG statement node. More...
 
void yang_clean_stmtQ (dlq_hdr_t *que)
 Delete a Q of YANG statement node. More...
 
status_t yang_validate_date_string (tk_chain_t *tkc, ncx_module_t *mod, ncx_error_t *tkerr, const xmlChar *datestr)
 Validate a YANG date string for a revision entry. More...
 
void yang_skip_statement (tk_chain_t *tkc, ncx_module_t *mod)
 Skip past the current invalid statement, starting at an invalid keyword. More...
 
boolean yang_top_keyword (const xmlChar *keyword)
 Check if the string is a top-level YANG keyword. More...
 
yang_import_ptr_t * yang_new_import_ptr (const xmlChar *modname, const xmlChar *modprefix, const xmlChar *revision, const xmlChar *descr, const xmlChar *ref)
 Create a new YANG import pointer node. More...
 
void yang_free_import_ptr (yang_import_ptr_t *impptr)
 Delete a YANG import pointer node. More...
 
void yang_clean_import_ptrQ (dlq_hdr_t *que)
 Delete all the node entries in a YANG import pointer node Q. More...
 
yang_import_ptr_t * yang_find_import_ptr (dlq_hdr_t *que, const xmlChar *name)
 Find a YANG import pointer node in the specified Q. More...
 
int32 yang_compare_revision_dates (const xmlChar *revstring1, const xmlChar *revstring2)
 Compare 2 revision strings, which either may be NULL. More...
 
xmlChar * yang_make_filename (const xmlChar *modname, const xmlChar *revision, boolean isyang)
 Malloc and construct a YANG filename. More...
 
status_t yang_copy_filename (const xmlChar *modname, const xmlChar *revision, xmlChar *buffer, uint32 bufflen, boolean isyang)
 Construct a YANG filename into a provided buffer. More...
 
boolean yang_split_filename (const xmlChar *filename, uint32 *modnamelen)
 Split a module parameter into its filename components. More...
 
boolean yang_fileext_is_yang (const xmlChar *filename)
 Check if the filespec ends with the .yang extension. More...
 
boolean yang_fileext_is_yin (const xmlChar *filename)
 Check if the filespec ends with the .yin extension. More...
 
boolean yang_fileext_is_xml (const xmlChar *filename)
 Check if the filespec ends with the .xml extension. More...
 
void yang_final_memcheck (void)
 Check the node malloc and free counts. More...
 
void yang_set_in_yangdata (yang_pcb_t *pcb, boolean val)
 Set the in_yangdata mode. More...
 
boolean yang_is_in_yangdata (const yang_pcb_t *pcb)
 Get the in_yangdata mode. More...
 
status_t yang_extract_filespec_info (const char *filespec, xmlChar **modname, xmlChar **revision, boolean *isyang)
 Split a filespec into its filename components. More...
 
void yang_clean_pcb_top (yang_pcb_t *pcb)
 Make sure pcb->top is freed before the pcb is reused after the bestmatch failed and NULL revision is tried. More...
 
uint32 yang_hash (const xmlChar *key, uint32 len)
 Generate a yang-hash for the specified key. More...
 

Detailed Description

YANG Parser Control Block and General Access Functions

Support Experimental YANG Hash identifiers (NOT USED)

Enumeration Type Documentation

◆ yang_parsetype_t_

YANG parser mode entry types.

Enumerator
YANG_PT_NONE 

not set

YANG_PT_TOP 

called from top level [sub]module

YANG_PT_INCLUDE 

called from module include-stmt

YANG_PT_IMPORT 

called from module import-stmt

Function Documentation

◆ yang_check_imports_used()

void yang_check_imports_used ( tk_chain_t *  tkc,
ncx_module_t *  mod 
)

generate warnings if imports not used

Check if the imports statements are actually used Check if the import is newer than the importing module Generate warnings if so

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain in progress
modmodule in progress
Here is the call graph for this function:

◆ yang_check_obj_used()

void yang_check_obj_used ( tk_chain_t *  tkc,
ncx_module_t *  mod,
dlq_hdr_t *  typeQ,
dlq_hdr_t *  grpQ 
)

generate warnings if local typedefs/groupings not used

Check if the local typedefs and groupings are actually used Generate warnings if not used

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain in progress
modmodule in progress
typeQtypedef Q to check
grpQpgrouping Q to check

◆ yang_clean_import_ptrQ()

void yang_clean_import_ptrQ ( dlq_hdr_t *  que)

Delete all the node entries in a YANG import pointer node Q.

Parameters
queQ of yang_import_ptr_t to clean
Here is the caller graph for this function:

◆ yang_clean_nodeQ()

void yang_clean_nodeQ ( dlq_hdr_t *  que)

Delete all the node entries in a YANG parser node Q.

Parameters
queQ of yang_node_t to clean
Here is the caller graph for this function:

◆ yang_clean_pcb_top()

void yang_clean_pcb_top ( yang_pcb_t *  pcb)

Make sure pcb->top is freed before the pcb is reused after the bestmatch failed and NULL revision is tried.

Parameters
pcbpcb to clean
Here is the call graph for this function:

◆ yang_clean_stmtQ()

void yang_clean_stmtQ ( dlq_hdr_t *  que)

Delete a Q of YANG statement node.

Parameters
queQ of yang_stmt_t node to delete

◆ yang_compare_revision_dates()

int32 yang_compare_revision_dates ( const xmlChar *  revstring1,
const xmlChar *  revstring2 
)

Compare 2 revision strings, which either may be NULL.

Parameters
revstring1revision string 1 (may be NULL)
revstring2revision string 2 (may be NULL)
Returns
compare result
     -1 if revision 1 < revision 2
     0 of they are the same
     +1 if revision1 > revision 2
Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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

Current token is the starting keyword

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain
modmodule in progress
boolvalboolean value to set (may be NULL)
dupflagaddress of flag to check if entry already found (may be NULL)
appinfoQQ to hold any extensions found
Return values
*boolvalset if NO_ERR
*dupflagset to TRUE if field already set
*appinfoQfilled in with any extensions found
Returns
status of the operation

◆ 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

Parse the description or reference statement

Current token is the starting keyword

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain
modmodule in progress
strstring to set (may be NULL)
dupflagflag to check if entry already found (may be NULL)
appinfoQQ to hold any extensions found
Return values
*strset to the value if str not NULL
*dupflagset to TRUE if field already set
*appinfoQfilled in with any extensions found
Returns
status of the operation

◆ 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.

length. pattern. must error info extensions

Parse the sub-section as a sub-section for error-app-tag and error-message clauses

Current token is the starting left brace for the sub-section that is extending a range, length, pattern, or must statement

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain
modmodule in progress
errinfopointer to valid ncx_errinfo_t struct The struct will be filled in by this fn
appinfoQQ to hold any extensions found
allow_modifierTRUE to check for YANG 1.1 modifier keyword
gotinvertedaddress of return got invert-match flag
Return values
*gotinvertedTRUE if got invert-match flag
*errinfofilled in with any clauses found
*appinfoQfilled in with any extensions found
Returns
status of the operation

◆ 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

Consume a YANG string token in any of the 3 forms Check that it is a valid YANG identifier string

Error messages are printed by this function!! Do not duplicate error messages upon error return

current token is advanced

Parameters
tkctoken chain
modmodule in progress
fieldaddress of field to get the name string (may be NULL)
Return values
*fieldis set with a malloced string in NO_ERR
Returns
status of the operation
Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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

Current token is the starting keyword

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain
modmodule in progress
numaddress of int32 value to set (may be NULL)
dupflagaddress of flag to check if entry already found (may be NULL)
appinfoQQ to hold any extensions found
Return values
*numset to the value if NO_ERR
*dupflagset to TRUE if field already set
*appinfoQfilled in with any extensions found
Returns
status of the operation

◆ yang_consume_keyword()

status_t yang_consume_keyword ( tk_chain_t *  tkc,
ncx_module_t *  mod,
xmlChar **  prefix,
xmlChar **  field 
)

consume 1 YANG keyword or vendor extension keyword

Error messages are printed by this function!! Do not duplicate error messages upon error return

current token is advanced

Parameters
tkctoken chain
modmodule in progress
prefixaddress of field to get the prefix string (may be NULL)
fieldaddress of field to get the name string (may be NULL)
Return values
*prefixis set with a malloced string in NO_ERR
*fieldis set with a malloced string in NO_ERR
Returns
status of the operation
Here is the call graph for this function:

◆ yang_consume_max_elements()

status_t yang_consume_max_elements ( tk_chain_t *  tkc,
ncx_module_t *  mod,
uint32 *  maxelems,
boolean *  dupflag,
dlq_hdr_t *  appinfoQ 
)

consume one max-elements clause

Parse the max-elements statement

Current token is the 'max-elements' keyword

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain
modmodule in progress
maxelemsaddress of max-elements object to set (may be NULL)
dupflagaddress of flag to check if entry already found (may be NULL)
appinfoQQ to hold any extensions found
Return values
*maxelemsset to the value if not NULL
*dupflagset to TRUE if field already set
*appinfoQfilled in with any extensions found
Returns
status of the operation

◆ yang_consume_modifier()

status_t yang_consume_modifier ( tk_chain_t *  tkc,
ncx_module_t *  mod,
boolean *  dupflag,
dlq_hdr_t *  appinfoQ 
)

consume one modifier-stmt

Current token is the 'modifier' keyword

Error messages are printed by this function!! Do not duplicate error messages upon error return

Only modifier supported is invert-match This code simply checks the syntax and does not set any fields

Parameters
tkctoken chain
modmodule in progress
dupflagaddress of flag to check if entry already found (may be NULL)
appinfoQQ to hold any extensions found
Return values
*dupflagset to TRUE if field already set
*appinfoQfilled in with any extensions found
Returns
status of the operation

◆ yang_consume_must()

status_t yang_consume_must ( tk_chain_t *  tkc,
ncx_module_t *  mod,
dlq_hdr_t *  mustQ,
dlq_hdr_t *  appinfoQ,
boolean  do_parse 
)

consume one must-stmt into mustQ

Parse the must statement

Current token is the 'must' keyword

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain
modmodule in progress
mustQaddress of Q of xpath_pcb_t structs to store a new malloced xpath_pcb_t
appinfoQQ to hold any extensions found
do_parseTRUE to attempt xpath1_parse_expr; FALSE to skip
Return values
mustQentry malloced and added to mustQ (if NO_ERR)
*appinfoQfilled in with any extensions found
Returns
status of the operation

◆ yang_consume_nowsp_string()

status_t yang_consume_nowsp_string ( tk_chain_t *  tkc,
ncx_module_t *  mod,
xmlChar **  field 
)

consume 1 string without any whitespace

Consume a YANG string token in any of the 3 forms Check No whitespace allowed!

Error messages are printed by this function!! Do not duplicate error messages upon error return

current token is advanced

Parameters
tkctoken chain
modmodule in progress
fieldaddress of field to get the name string (may be NULL)
Return values
*fieldis set with a malloced string in NO_ERR
Returns
status of the operation
Here is the call graph for this function:

◆ yang_consume_ordered_by()

status_t yang_consume_ordered_by ( tk_chain_t *  tkc,
ncx_module_t *  mod,
boolean *  ordsys,
boolean *  dupflag,
dlq_hdr_t *  appinfoQ 
)

consume one ordered-by clause

Parse the ordered-by statement

Current token is the 'ordered-by' keyword

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain
modmodule in progress
ordsysaddress of ordered-by object to set (may be NULL)
dupflagaddress of flag to check if entry already found (may be NULL)
appinfoQQ to hold any extensions found
Return values
*ordsysset to the value if ordsys not NULL
*dupflagset to TRUE if field already set
*appinfoQfilled in with any extensions found
Returns
status of the operation

◆ 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

Parse the rest of the statement (2 forms):

         keyword [prefix:]name;
         keyword [prefix:]name { appinfo }

Current token is the starting keyword

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain
modmodule in progress
prefixstraddress of prefix string to set (may be NULL)
straddress of string to set (may be NULL)
dupflagaddress of flag to check if entry already found (may be NULL)
appinfoQQ to hold any extensions found
Return values
*prefixset to the prefix value is any, if str not NULL
*strset to the value if str not NULL
*dupflagset to TRUE if field already set
*appinfoQfilled in with any extensions found
Returns
status of the operation

◆ 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

Consume a YANG string token in any of the 3 forms Check that it is a valid identifier-ref-string Get the prefix if any is set

Error messages are printed by this function!! Do not duplicate error messages upon error return

current token is advanced

Parameters
tkctoken chain
modmodule in progress
prefixaddress of field to get the prefix string (may be NULL)
fieldaddress of field to get the name string (may be NULL)
Return values
*prefixis set with a malloced string in NO_ERR
*fieldis set with a malloced string in NO_ERR
Returns
status of the operation
Here is the call graph for this function:

◆ yang_consume_semiapp()

status_t yang_consume_semiapp ( tk_chain_t *  tkc,
ncx_module_t *  mod,
dlq_hdr_t *  appinfoQ 
)

consume a stmtsep clause

Consume a semi-colon to end a simple clause, or consume a vendor extension

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain
modmodule in progress
appinfoQqueue to receive any vendor extension found
Return values
*appinfoQhas the extesnion added if any current token is advanced
Returns
status of the operation

◆ 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

Parse the status statement

Current token is the 'status' keyword

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain
modmodule in progress
statusaddress of status object to set (may be NULL)
dupflagaddress of flag to check if entry already found (may be NULL)
appinfoQQ to hold any extensions found
Return values
*statusset to the value if status not NULL
*dupflagset to TRUE if field already set
*appinfoQfilled in with any extensions found
Returns
status of the operation

◆ 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

Parse the string-parameter-based statement

Current token is the starting keyword

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain
modmodule in progress
straddress of string to set (may be NULL)
dupflagaddress of flag to check if entry already found (may be NULL)
appinfoQQ to hold any extensions found
Return values
*strset to the value if str not NULL
*dupflagset to TRUE if field already set
*appinfoQfilled in with any extensions found
Returns
status of the operation

◆ yang_consume_string()

status_t yang_consume_string ( tk_chain_t *  tkc,
ncx_module_t *  mod,
xmlChar **  field 
)

consume 1 string token

Consume a YANG string token in any of the 3 forms

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain
modmodule in progress
fieldaddress of field to get the string (may be NULL)
Return values
*fieldis set with a malloced string in NO_ERR current token is advanced
Returns
status of the operation
Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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

Parse the uint32 based parameter statement

Current token is the starting keyword

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain
modmodule in progress
numaddress of uint32 value to set (may be NULL)
dupflagaddress of flag to check if entry already found (may be NULL)
appinfoQQ to hold any extensions found
Return values
*numset if NO_ERR
*dupflagset to TRUE if field already set
*appinfoQfilled in with any extensions found
Returns
status of the operation

◆ yang_consume_when()

status_t yang_consume_when ( tk_chain_t *  tkc,
ncx_module_t *  mod,
obj_template_t *  obj,
boolean *  whenflag 
)

consume one when-stmt into obj->when

Parse the when statement

Current token is the 'when' keyword

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
tkctoken chain
modmodule in progress
objobj_template_t of the parent object of this 'when'
whenflagaddress of boolean set-once flag for the when-stmt an error will be generated if the value passed in is TRUE. Set the initial value to FALSE before first call, and do not change it after that
Return values
obj->whenmalloced and dilled in
*whenflagset if not set already
Returns
status of the operation
Here is the call graph for this function:

◆ yang_copy_filename()

status_t yang_copy_filename ( const xmlChar *  modname,
const xmlChar *  revision,
xmlChar *  buffer,
uint32  bufflen,
boolean  isyang 
)

Construct a YANG filename into a provided buffer.

Parameters
modname[sub]module name
revision[sub]module revision date (may be NULL)
bufferbuffer to copy filename into
bufflennumber of bytes available in buffer
isyangTRUE for YANG extension
FALSE for YIN extension
Returns
malloced and filled in string buffer with filename
NULL if any error
Here is the call graph for this function:

◆ yang_dump_nodeQ()

void yang_dump_nodeQ ( dlq_hdr_t *  que,
const char *  name 
)

log_debug output for contents of the specified nodeQ

Parameters
queQ of yang_node_t to check
nameQ name (may be NULL)

◆ yang_extract_filespec_info()

status_t yang_extract_filespec_info ( const char *  filespec,
xmlChar **  modname,
xmlChar **  revision,
boolean *  isyang 
)

Split a filespec into its filename components.

Parameters
filespecfilespec string
modnameaddress of return malloced module name
revisionaddress of return malloced revision date
isyangaddress of return yang/yin flag
Return values
*modnamemalloced mod name string (must free with m__free)
*revisionmalloced revision date string (must free with m__free)
*isyangTRUE if .yang, FALSE if .yin
Returns
status
Here is the call graph for this function:

◆ yang_fileext_is_xml()

boolean yang_fileext_is_xml ( const xmlChar *  filename)

Check if the filespec ends with the .xml extension.

Parameters
filenamefilename string
Returns
TRUE if .xml file extension found
FALSE if not
Here is the call graph for this function:

◆ yang_fileext_is_yang()

boolean yang_fileext_is_yang ( const xmlChar *  filename)

Check if the filespec ends with the .yang extension.

Parameters
filenamefilename string
Returns
TRUE if .yang file extension found
FALSE if not
Here is the call graph for this function:

◆ yang_fileext_is_yin()

boolean yang_fileext_is_yin ( const xmlChar *  filename)

Check if the filespec ends with the .yin extension.

Parameters
filenamefilename string
Returns
TRUE if .yin file extension found
FALSE if not
Here is the call graph for this function:

◆ yang_final_memcheck()

void yang_final_memcheck ( void  )

Check the node malloc and free counts.

Here is the call graph for this function:

◆ yang_find_imp_extension()

status_t yang_find_imp_extension ( yang_pcb_t *  pcb,
tk_chain_t *  tkc,
ncx_module_t *  mod,
const xmlChar *  prefix,
const xmlChar *  name,
ncx_error_t *  tkerr,
ext_template_t **  ext 
)

Find the specified imported extension.

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
pcbparser control block to use
tkctoken chain
modmodule in progress
prefixprefix value to use
nameextension name to use
tkerrerror record to use in error messages (may be NULL)
extaddress of return ext_template_t pointer
Return values
*extset to the found ext_template_t, if NO_ERR
Returns
status of the operation
Here is the call graph for this function:

◆ yang_find_imp_feature()

status_t yang_find_imp_feature ( yang_pcb_t *  pcb,
tk_chain_t *  tkc,
ncx_module_t *  mod,
const xmlChar *  prefix,
const xmlChar *  name,
ncx_error_t *  tkerr,
ncx_feature_t **  feature 
)

Find the specified imported feature.

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
pcbparser control block to use
tkctoken chain
modmodule in progress
prefixprefix value to use
namefeature name to use
tkerrerror record to use in error messages (may be NULL)
featureaddress of return ncx_feature_t pointer
Return values
*featureset to the found ncx_feature_t, if NO_ERR
Returns
status of the operation
Here is the call graph for this function:

◆ yang_find_imp_grouping()

status_t yang_find_imp_grouping ( yang_pcb_t *  pcb,
tk_chain_t *  tkc,
ncx_module_t *  mod,
const xmlChar *  prefix,
const xmlChar *  name,
ncx_error_t *  tkerr,
grp_template_t **  grp 
)

Find the specified imported grouping.

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
pcbparser control block to use
tkctoken chain
modmodule in progress
prefixprefix value to use
namegrouping name to use
tkerrerror record to use in error messages (may be NULL)
grpaddress of return grp_template_t pointer
Return values
*grpset to the found grp_template_t, if NO_ERR
Returns
status of the operation
Here is the call graph for this function:

◆ 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.

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
pcbparser control block to use
tkctoken chain
modmodule in progress
prefixprefix value to use
namefeature name to use
tkerrerror record to use in error messages (may be NULL)
identityaddress of return ncx_identity_t pointer
Return values
*identityset to the found ncx_identity_t, if NO_ERR
Returns
status of the operation
Here is the call graph for this function:

◆ 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.

Error messages are printed by this function!! Do not duplicate error messages upon error return

Parameters
pcbparser control block to use
tkctoken chain
modmodule in progress
prefixprefix value to use
nametype name to find
tkerrerror record to use in error messages (may be NULL)
typaddress of return typ_template_t pointer
Return values
*typset to the found typ_template_t, if NO_ERR
Returns
status of the operation
Here is the call graph for this function:

◆ yang_find_import_ptr()

yang_import_ptr_t* yang_find_import_ptr ( dlq_hdr_t *  que,
const xmlChar *  name 
)

Find a YANG import pointer node in the specified Q.

Parameters
queQ of yang_import_ptr_t to check
namemodule name to find
Returns
pointer to found node, NULL if not found

◆ yang_find_node()

yang_node_t* yang_find_node ( const dlq_hdr_t *  que,
const xmlChar *  name,
const xmlChar *  revision 
)

Find a YANG parser node in the specified Q.

Parameters
queQ of yang_node_t to check
namemodule name to find
revisionmodule revision date (may be NULL)
Returns
pointer to found node, NULL if not found
Here is the caller graph for this function:

◆ yang_free_import_ptr()

void yang_free_import_ptr ( yang_import_ptr_t *  impptr)

Delete a YANG import pointer node.

Parameters
impptrimport pointer node to delete
Here is the caller graph for this function:

◆ yang_free_node()

void yang_free_node ( yang_node_t *  node)

Clean and delete the memory for a YANG parser node.

Parameters
nodeparser node to delete
Here is the call graph for this function:

◆ yang_free_pcb()

void yang_free_pcb ( yang_pcb_t *  pcb)

Delete a YANG parser control block.

Parameters
pcbparser control block to delete
Here is the call graph for this function:
Here is the caller graph for this function:

◆ yang_free_stmt()

void yang_free_stmt ( yang_stmt_t *  stmt)

Delete a YANG statement node.

Parameters
stmtyang_stmt_t node to delete

◆ yang_hash()

uint32 yang_hash ( const xmlChar *  key,
uint32  len 
)

Generate a yang-hash for the specified key.

Murmur3_32 hash function but only return low 30 bits The seed is fixed to be 42

Parameters
keystring to hash
lenlength of key in bytes
Returns
hash value
Here is the caller graph for this function:

◆ yang_is_in_yangdata()

boolean yang_is_in_yangdata ( const yang_pcb_t *  pcb)

Get the in_yangdata mode.

Parameters
pcbparser control block to check
Returns
current yangdata mode

◆ yang_make_filename()

xmlChar* yang_make_filename ( const xmlChar *  modname,
const xmlChar *  revision,
boolean  isyang 
)

Malloc and construct a YANG filename.

Parameters
modname[sub]module name
revision[sub]module revision date (may be NULL)
isyangTRUE for YANG extension
FALSE for YIN extension
Returns
malloced and filled in string buffer with filename
NULL if any error
Here is the call graph for this function:

◆ yang_new_deviation_stmt()

yang_stmt_t* yang_new_deviation_stmt ( obj_deviation_t *  deviation)

Create a new YANG stmt node for a deviation definition.

Parameters
deviationdeviation template to use for new statement struct
Returns
pointer to new and initialized struct, NULL if memory error

◆ yang_new_ext_stmt()

yang_stmt_t* yang_new_ext_stmt ( ext_template_t *  ext)

Create a new YANG stmt node for an extension.

Parameters
extextension template to use for new statement struct
Returns
pointer to new and initialized struct, NULL if memory error

◆ yang_new_feature_stmt()

yang_stmt_t* yang_new_feature_stmt ( ncx_feature_t *  feature)

Create a new YANG stmt node for a feature definition.

Parameters
featurefeature template to use for new statement struct
Returns
pointer to new and initialized struct, NULL if memory error

◆ yang_new_grp_stmt()

yang_stmt_t* yang_new_grp_stmt ( grp_template_t *  grp)

Create a new YANG stmt node for a grouping.

Parameters
grpgrouping template to use for new statement struct
Returns
pointer to new and initialized struct, NULL if memory error

◆ yang_new_id_stmt()

yang_stmt_t* yang_new_id_stmt ( ncx_identity_t *  identity)

Create a new YANG stmt node for an identity.

Parameters
identityidentity template to use for new statement struct
Returns
pointer to new and initialized struct, NULL if memory error

◆ yang_new_import_ptr()

yang_import_ptr_t* yang_new_import_ptr ( const xmlChar *  modname,
const xmlChar *  modprefix,
const xmlChar *  revision,
const xmlChar *  descr,
const xmlChar *  ref 
)

Create a new YANG import pointer node.

Parameters
modnamemodule name to set
modprefixmodule prefix to set
revisionrevision date to set
descrdescription string (YANG 1.1)
refreference string (YANG 1.1)
Returns
pointer to new and initialized struct, NULL if memory error
Here is the call graph for this function:

◆ yang_new_node()

yang_node_t* yang_new_node ( void  )

Create a new YANG parser node.

Returns
pointer to new and initialized struct, NULL if memory error
Here is the call graph for this function:

◆ yang_new_obj_stmt()

yang_stmt_t* yang_new_obj_stmt ( obj_template_t *  obj)

Create a new YANG stmt node for an object.

Parameters
objobject template to use for new statement struct
Returns
pointer to new and initialized struct, NULL if memory error

◆ yang_new_pcb()

yang_pcb_t* yang_new_pcb ( void  )

Create a new YANG parser control block.

Returns
pointer to new and initialized struct, NULL if memory error
Here is the call graph for this function:
Here is the caller graph for this function:

◆ yang_new_typ_stmt()

yang_stmt_t* yang_new_typ_stmt ( typ_template_t *  typ)

Create a new YANG stmt node for a typedef.

Parameters
typtype template to use for new statement struct
Returns
pointer to new and initialized struct, NULL if memory error

◆ yang_set_in_yangdata()

void yang_set_in_yangdata ( yang_pcb_t *  pcb,
boolean  val 
)

Set the in_yangdata mode.

Parameters
pcbparser control block to set
valcurrent mode to set

◆ yang_skip_statement()

void yang_skip_statement ( tk_chain_t *  tkc,
ncx_module_t *  mod 
)

Skip past the current invalid statement, starting at an invalid keyword.

Parameters
tkctoken chain in progress
modmodule in progress

◆ yang_split_filename()

boolean yang_split_filename ( const xmlChar *  filename,
uint32 *  modnamelen 
)

Split a module parameter into its filename components.

Parameters
filenamefilename string
modnamelenaddress of return modname length
Return values
*modnamelenmodule name length
Returns
TRUE if "module@revision" form was found
FALSE if not, and ignore the output because a different form of the module parameter was used

◆ yang_top_keyword()

boolean yang_top_keyword ( const xmlChar *  keyword)

Check if the string is a top-level YANG keyword.

Parameters
keywordstring to check
Returns
TRUE if a top-level YANG keyword, FALSE otherwise
Here is the call graph for this function:

◆ yang_validate_date_string()

status_t yang_validate_date_string ( tk_chain_t *  tkc,
ncx_module_t *  mod,
ncx_error_t *  tkerr,
const xmlChar *  datestr 
)

Validate a YANG date string for a revision entry.

  Expected format is:
     YYYY-MM-DD

Error messages are printed by this function

Parameters
tkctoken chain in progress
modmodule in progress
tkerrerror struct to use (may be NULL to use tkc->cur)
datestrstring to validate
Returns
status
Here is the call graph for this function: