yumapro
24.10-3
YumaPro SDK
|
Contains many general utilities useful for SIL and SIL-SA code to use. More...
Functions | |
status_t | agt_get_cfg_from_parm (const xmlChar *parmname, rpc_msg_t *msg, xml_node_t *methnode, cfg_template_t **retcfg) |
FUNCTION agt_get_cfg_from_parm. More... | |
status_t | agt_get_inline_cfg_from_parm (const xmlChar *parmname, rpc_msg_t *msg, xml_node_t *methnode, val_value_t **retval) |
Get the val_value_t node for the inline config element. More... | |
status_t | agt_get_url_from_parm (const xmlChar *parmname, rpc_msg_t *msg, xml_node_t *methnode, const xmlChar **returl, val_value_t **retval) |
Get the URL string for the config in the target param. More... | |
xmlChar * | agt_get_filespec_from_url (const xmlChar *urlstr, status_t *res) |
Check the URL and get the filespec part out of it. More... | |
const val_value_t * | agt_get_parmval (const xmlChar *parmname, rpc_msg_t *msg) |
Get the identified val_value_t for a given parameter. More... | |
void | agt_record_error (ses_cb_t *scb, xml_msg_hdr_t *msghdr, ncx_layer_t layer, status_t res, const xml_node_t *xmlnode, ncx_node_t parmtyp, const void *error_info, ncx_node_t nodetyp, void *error_path) |
Generate an rpc_err_rec_t and save it in the msg. More... | |
void | agt_record_error_obj (ses_cb_t *scb, xml_msg_hdr_t *msghdr, status_t res, obj_template_t *errobj, const xmlChar *badval) |
Generate an rpc_err_rec_t and save it in the msg Use the provided object for <rpc-error> fields. More... | |
void | agt_record_error_errinfo (ses_cb_t *scb, xml_msg_hdr_t *msghdr, ncx_layer_t layer, status_t res, const xml_node_t *xmlnode, ncx_node_t parmtyp, const void *error_info, ncx_node_t nodetyp, void *error_path, const ncx_errinfo_t *errinfo) |
Generate an rpc_err_rec_t and save it in the msg Use provided error fields. More... | |
void | agt_record_warning (ses_cb_t *scb, xml_msg_hdr_t *msghdr, ncx_layer_t layer, status_t res, const xml_node_t *xmlnode, ncx_node_t parmtyp, const void *error_parm, ncx_node_t nodetyp, void *error_path, const ncx_errinfo_t *errinfo) |
Generate an rpc_err_rec_t and save it in the msg. More... | |
void | agt_record_attr_error (ses_cb_t *scb, xml_msg_hdr_t *msghdr, ncx_layer_t layer, status_t res, const xml_attr_t *xmlattr, const xml_node_t *xmlnode, const xmlChar *badns, ncx_node_t nodetyp, void *errnode) |
Generate an rpc_err_rec_t and save it in the msg. More... | |
void | agt_record_insert_error (ses_cb_t *scb, xml_msg_hdr_t *msghdr, status_t res, val_value_t *errval) |
Generate an rpc_err_rec_t and save it in the msg Called from the YANG edit validation code when an invalid insert operation is detected. More... | |
void | agt_record_unique_error (ses_cb_t *scb, xml_msg_hdr_t *msghdr, val_value_t *errval, dlq_hdr_t *valuniqueQ) |
Generate an rpc_err_rec_t and save it in the msg. More... | |
status_t | agt_validate_filter (ses_cb_t *scb, rpc_msg_t *msg) |
Validate the <filter> parameter if present. More... | |
status_t | agt_validate_filter_ex (ses_cb_t *scb, rpc_msg_t *msg, val_value_t *filter) |
Validate the <filter> parameter if present (extended) More... | |
status_t | agt_validate_filter_nmda (rpc_msg_t *msg, val_value_t *filter, boolean is_subtree, boolean is_operational) |
Validate the <filter> parameter; FOR NMDA ONLY. More... | |
boolean | agt_check_config (xml_msg_hdr_t *mhdr, ncx_withdefaults_t withdef, boolean realtest, val_value_t *node) |
Used by the <get-config> operation to return any type of configuration data. More... | |
boolean | agt_check_default (xml_msg_hdr_t *mhdr, ncx_withdefaults_t withdef, boolean realtest, val_value_t *node) |
Used by the <get*> operation to return only values not set to the default. More... | |
boolean | agt_check_config_false (xml_msg_hdr_t *mhdr, ncx_withdefaults_t withdef, boolean realtest, val_value_t *node) |
Used by the <get*> operation to return only config=false nodes and the ID ancestor nodes. More... | |
boolean | agt_check_config_false_default (xml_msg_hdr_t *mhdr, ncx_withdefaults_t withdef, boolean realtest, val_value_t *node) |
Used by the <get> operation to return only content=nonconfig nodes and the ID ancestor node and only values not set to the default except if it is a container with counters. More... | |
boolean | agt_check_save (xml_msg_hdr_t *mhdr, ncx_withdefaults_t withdef, boolean realtest, val_value_t *node) |
Used by agt_ncx_cfg_save function to filter just what is supposed to be saved in the <startup> config file. More... | |
boolean | agt_check_modtags (xml_msg_hdr_t *mhdr, ncx_withdefaults_t withdef, boolean realtest, val_value_t *node) |
Used by the <get> and <get-config> operation to return report-all module-tags filtered data. More... | |
boolean | agt_check_basic (xml_msg_hdr_t *mhdr, ncx_withdefaults_t withdef, boolean realtest, val_value_t *node) |
Used by the <get-data> operation to return basic filtering NMDA, module-tags, tstamps filtered data. More... | |
status_t | agt_output_filter (ses_cb_t *scb, rpc_msg_t *msg, int32 indent) |
output the proper data for the get or get-config operation generate the data that matched the subtree or XPath filter More... | |
status_t | agt_output_schema (ses_cb_t *scb, rpc_msg_t *msg, int32 indent) |
generate the YANG file contents for the get-schema operation More... | |
status_t | agt_output_empty (ses_cb_t *scb, rpc_msg_t *msg, int32 indent) |
output no data for the get or get-config operation because the if-modified-since fileter did not pass More... | |
status_t | agt_check_max_access (val_value_t *newval, boolean cur_exists) |
Check if the max-access for a parameter is exceeded. More... | |
status_t | agt_check_editop (op_editop_t pop, op_editop_t *cop, val_value_t *newnode, val_value_t *curnode, ncx_iqual_t iqual, ncx_protocol_t proto, boolean is_commit, boolean *delete_default) |
Check if the edit operation is okay. More... | |
status_t | agt_enable_feature (const xmlChar *modname, const xmlChar *featurename) |
Enable a YANG feature in the server. More... | |
status_t | agt_disable_feature (const xmlChar *modname, const xmlChar *featurename) |
Disable a YANG feature in the server. More... | |
val_value_t * | agt_make_leaf (obj_template_t *parentobj, const xmlChar *leafname, const xmlChar *leafstrval, status_t *res) |
make a string val_value_t struct for a specified leaf or leaf-list More... | |
val_value_t * | agt_make_uint_leaf (obj_template_t *parentobj, const xmlChar *leafname, uint32 leafval, status_t *res) |
make a uint32 val_value_t struct for a specified leaf or leaf-list More... | |
val_value_t * | agt_make_int_leaf (obj_template_t *parentobj, const xmlChar *leafname, int32 leafval, status_t *res) |
make an int32 val_value_t struct for a specified leaf or leaf-list More... | |
val_value_t * | agt_make_uint64_leaf (obj_template_t *parentobj, const xmlChar *leafname, uint64 leafval, status_t *res) |
make a uint64 val_value_t struct for a specified leaf or leaf-list More... | |
val_value_t * | agt_make_int64_leaf (obj_template_t *parentobj, const xmlChar *leafname, int64 leafval, status_t *res) |
make an int64 val_value_t struct for a specified leaf or leaf-list More... | |
val_value_t * | agt_make_idref_leaf (obj_template_t *parentobj, const xmlChar *leafname, const val_idref_t *leafval, status_t *res) |
make an identityref val_value_t struct for a specified leaf or leaf-list More... | |
val_value_t * | agt_make_list (obj_template_t *parentobj, const xmlChar *listname, status_t *res) |
make a val_value_t struct for a specified list More... | |
val_value_t * | agt_make_object (obj_template_t *parentobj, const xmlChar *objname, status_t *res) |
make a val_value_t struct for a specified node More... | |
val_value_t * | agt_make_virtual_leaf (obj_template_t *parentobj, const xmlChar *leafname, getcb_fn_t callbackfn, status_t *res) |
make a val_value_t struct for a specified virtual leaf or leaf-list More... | |
status_t | agt_add_top_virtual (obj_template_t *obj, getcb_fn_t callbackfn) |
make a val_value_t struct for a specified virtual top-level data node More... | |
status_t | agt_add_top_container (obj_template_t *obj, val_value_t **val) |
make a val_value_t struct for a specified top-level container data node. More... | |
status_t | agt_add_container (const xmlChar *modname, const xmlChar *objname, val_value_t *parentval, val_value_t **val) |
make a val_value_t struct for a specified nested container data node. More... | |
val_value_t * | agt_init_cache (const xmlChar *modname, const xmlChar *objname, status_t *res) |
init a cache pointer during the init2 callback More... | |
status_t | agt_check_cache (val_value_t **cacheptr, val_value_t *newval, val_value_t *curval, op_editop_t editop) |
check if a cache pointer needs to be changed or NULLed out More... | |
xpath_pcb_t * | agt_new_xpath_pcb (ses_cb_t *scb, const xmlChar *expr, status_t *res) |
Get a new XPath parser control block and set up the server variable bindings. More... | |
xmlChar * | agt_make_srid_filespec (const xmlChar *basestr, const xmlChar *patstr, const xmlChar *valstr) |
Make a filespec string needed for a filespec with SRID in it. More... | |
xmlChar * | agt_get_startup_filespec (status_t *res) |
Figure out where to store the startup file. More... | |
xmlChar * | agt_get_target_filespec (const xmlChar *target_url, status_t *res) |
Figure out where to store the URL target file. More... | |
status_t | agt_set_mod_defaults (ncx_module_t *mod, val_value_t *valroot, boolean set_candidate, boolean set_augment, boolean force) |
Check for any top-level config leafs that have a default value, and add them to the running configuration. More... | |
status_t | agt_set_val_defaults (val_value_t *val) |
Check for any node-level config leafs that have a default value, and add them to the running configuration. More... | |
status_t | agt_set_with_defaults (rpc_msg_t *msg, const xmlChar *modname, val_value_t **errval) |
Check if the <with-defaults> parameter is set in the request message, and if so, it is one of the server's supported values. More... | |
void | agt_set_with_owners (rpc_msg_t *msg) |
Check if the <with-owners> parameter is set in the request message. More... | |
void | agt_set_depth (rpc_msg_t *msg) |
Check if the <depth> parameter is set in the request message. More... | |
void | agt_set_depth_nmda (rpc_msg_t *msg) |
Check if the <depth> parameter is set NMDA max-depth parameter in the request message If so, then set the msg->mhdr.max_depth and cur_depth will be set. More... | |
val_value_t * | agt_get_key_value (val_value_t *startval, val_value_t **lastkey) |
Get the next expected key value in the ancestor chain. More... | |
val_value_t * | agt_add_top_node_if_missing (ncx_module_t *mod, const xmlChar *objname, boolean *added, status_t *res) |
Add a top config node if it is missing. More... | |
boolean | agt_any_operations_set (val_value_t *val) |
Check the new node and all descendants for any operation attibutes prsent. More... | |
boolean | agt_apply_this_node (op_editop_t editop, const val_value_t *newnode, const val_value_t *curnode) |
Check if the write operation applies to the current node. More... | |
boolean | agt_apply_this_node_ex (op_editop_t editop, const val_value_t *newnode, const val_value_t *curnode, boolean ignore_defaults, boolean childonly, boolean top_replace) |
Check if the write operation applies to the current node. More... | |
boolean | agt_backups_enabled (void) |
Check if the backup commands are enabled. More... | |
xpath_result_t * | agt_get_result_from_xpath (xpath_pcb_t *pcb, val_value_t *rootval, status_t *retres) |
Get the result from evaluating an XPath expression. More... | |
val_value_t * | agt_get_first_result_val (xpath_result_t *result) |
Get the first XPath result node or NULL if not node-set or empty node-set or not value node. More... | |
void | agt_output_start_container (ses_cb_t *scb, xml_msg_hdr_t *mhdr, xmlns_id_t parent_nsid, xmlns_id_t node_nsid, const xmlChar *node_name, int32 indent) |
Output a start container node. More... | |
void | agt_output_start_node (ses_cb_t *scb, xml_msg_hdr_t *mhdr, xmlns_id_t parent_nsid, xmlns_id_t node_nsid, const xmlChar *node_name, int32 indent, boolean try_modname) |
Output a start node and try to use modname in front if needed. More... | |
void | agt_output_start_node2 (ses_cb_t *scb, xml_msg_hdr_t *mhdr, xmlns_id_t parent_nsid, xmlns_id_t node_nsid, const xmlChar *node_name, int32 indent, boolean try_modname, val_value_t *metaval) |
Output a start node and try to use modname in front if needed. More... | |
void | agt_output_start_errors_container (ses_cb_t *scb, xml_msg_hdr_t *mhdr, xmlns_id_t parent_nsid, xmlns_id_t nsid, const xmlChar *elname, const dlq_hdr_t *attrQ, boolean isattrq, int32 indent, boolean empty) |
Output a start <errors> element on the specified session for RESTCONF error handling. More... | |
void | agt_output_end_container (ses_cb_t *scb, xml_msg_hdr_t *mhdr, xmlns_id_t node_nsid, const xmlChar *node_name, int32 indent) |
Output an end container node. More... | |
boolean | agt_match_etag (val_value_t *val, const xmlChar *etag) |
Check if the etag matches the specified value string. More... | |
boolean | agt_match_etag_binary (val_value_t *val, ncx_etag_t etag) |
Check if the etag matches the specified value string. More... | |
boolean | agt_modified_since (val_value_t *val, time_t *timerec) |
Check if the timestamp for the object is later then the specified timestamp. More... | |
boolean | agt_notifications_enabled (void) |
Check if notifications are enabled. More... | |
val_value_t * | agt_make_leaf2 (obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, const xmlChar *leafstrval, status_t *res) |
make a val_value_t struct for a specified leaf or leaf-list More... | |
val_value_t * | agt_make_union_leaf (obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, const val_value_t *leafval, status_t *res) |
make a val_value_t struct for a specified leaf or leaf-list use a val_value_t for a union More... | |
val_value_t * | agt_make_uint_leaf2 (obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, uint32 leafval, status_t *res) |
make a val_value_t struct for a specified leaf or leaf-list More... | |
val_value_t * | agt_make_int_leaf2 (obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, int32 leafval, status_t *res) |
make a val_value_t struct for a specified leaf or leaf-list More... | |
val_value_t * | agt_make_uint64_leaf2 (obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, uint64 leafval, status_t *res) |
make a val_value_t struct for a specified leaf or leaf-list More... | |
val_value_t * | agt_make_int64_leaf2 (obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, int64 leafval, status_t *res) |
make a val_value_t struct for a specified leaf or leaf-list More... | |
val_value_t * | agt_make_idref_leaf2 (obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, const val_idref_t *leafval, status_t *res) |
make a val_value_t struct for a specified leaf or leaf-list More... | |
val_value_t * | agt_make_bits_leaf (obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, const ncx_list_t *listval, status_t *res) |
make a val_value_t struct for a specified leaf or leaf-list (NCX_BT_BITS or NCX_BT_SLIST) More... | |
val_value_t * | agt_make_boolean_leaf (obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, boolean boolval, status_t *res) |
make a val_value_t struct for a specified leaf or leaf-list (NCX_BT_BOOL) More... | |
val_value_t * | agt_make_empty_leaf (obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, boolean boolval, status_t *res) |
make a val_value_t struct for a specified leaf or leaf-list (NCX_BT_EMPTY) More... | |
val_value_t * | agt_make_object2 (obj_template_t *parentobj, const xmlChar *modname, const xmlChar *objname, status_t *res) |
make a val_value_t struct for a specified node More... | |
val_value_t * | agt_make_virtual_leaf2 (obj_template_t *parentobj, const xmlChar *modname, const xmlChar *leafname, getcb_fn_t callbackfn, status_t *res) |
make a val_value_t struct for a specified virtual leaf or leaf-list More... | |
ncx_cfg_t | agt_get_edit_config_id (rpc_msg_t *rpcmsg) |
Get the enum ID of the configuration that is being edited. More... | |
boolean | agt_module_in_cli_valset (const xmlChar *modname) |
Check if there is a module=foo parameter in the CLI parameter set. More... | |
void | agt_set_basic_withdef_enabled (void) |
Force the basic mode to be enabled in the agt_withdef_enabled bitmask. More... | |
boolean | agt_check_delete_all_allowed (obj_template_t *testobj) |
Check if the delete-all or remove-all operation is enabled for for specified object. More... | |
op_editop_t | agt_cvt_editop (op_editop_t editop, const val_value_t *newval, const val_value_t *curval) |
Determine the effective edit (if OP_EDITOP_COMMIT) More... | |
op_editop_t | agt_cvt_editop_acm (op_editop_t editop, const val_value_t *newval, const val_value_t *curval) |
Determine the effective edit for NACM. More... | |
op_editop_t | agt_cvt_editop_ex (op_editop_t editop, const val_value_t *newval, const val_value_t *curval) |
Determine the effective edit (if OP_EDITOP_COMMIT) Do not convert COMMIT to REPLACE same as cvt_editop. More... | |
int | agt_connect_client (const xmlChar *hostname, uint16_t port) |
Start a TCP connection to a client. More... | |
status_t | agt_find_in_datastore (ncx_cfg_t cfg_id, val_value_t *err_value, val_value_t **retval) |
Find the node (should be from an <edit-config> content node) in the specified datastore. More... | |
uint32 | agt_get_error_count (rpc_msg_t *msg) |
Get the current number of errors in the rpc msg Q. More... | |
val_value_t * | agt_get_rpc_input (rpc_msg_t *msg) |
Get the rpc input value node. More... | |
obj_template_t * | agt_get_rpc_output_obj (rpc_msg_t *msg) |
Get the rpc output object template. More... | |
obj_template_t * | agt_get_action_output_obj (val_value_t *actionval) |
Get the action output object template. More... | |
const xmlChar * | agt_getTermReasonStr (ses_term_reason_t termreason) |
Convert the termination reason enum to a string. More... | |
boolean | agt_get_ok_for_nolock (rpc_msg_t *msg) |
Check if the get has filters and if they are OK for a <get> without waiting for a pthreads filter. More... | |
boolean | agt_getbulk_ok_for_nolock (const xmlChar *pathstr) |
Check if the get-bulk target is OK for a nolock get without waiting for a pthreads filter. More... | |
boolean | agt_op_ok_for_maintenance_mode (const obj_template_t *rpcobj) |
Check if the operation is OK for maintenance mode. More... | |
const xmlChar * | agt_crl_mode_str (agt_crl_mode_t crl_mode) |
Get the string for the CRL mode enum. More... | |
agt_crl_mode_t | agt_crl_mode_enum (const xmlChar *crl_mode) |
Get the enum for the CRL mode string. More... | |
val_nodetest_fn_t | agt_util_get_testfn (xml_msg_hdr_t *msg, boolean getop) |
Get the test function that should be used for a specific get operation based on with-default parameter and get operation. More... | |
status_t | agt_fill_dummy_method (const xmlChar *modname, const xmlChar *rpcname, xml_node_t *node, obj_template_t **rpcobj) |
Fill the xml_node with the proper data to fake an XML node for the start of the rpc-method element. More... | |
yang_patch_cb_t * | agt_make_yang_patch_cb (const xmlChar *patch_id, const xmlChar *the_comment, const xmlChar *patch_root, agt_cfg_transaction_t *txcb, uint32 included_changes) |
Make a yang_patch_cb for a YANG Patch conventional datastore on-change update. More... | |
yang_patch_cb_t * | agt_make_yang_patch_cb_targobj (const xmlChar *patch_id, const xmlChar *the_comment, const xmlChar *patch_root, agt_cfg_transaction_t *txcb, uint32 included_changes, obj_template_t *targobj) |
Make a yang_patch_cb for a YANG Patch conventional datastore on-change update for a target object. More... | |
yang_patch_cb_t * | agt_make_yang_patch_cb_file (const xmlChar *patch_id, const xmlChar *the_comment, const xmlChar *patch_root, const xmlChar *filespec) |
Make a yang_patch_cb for a Simulated Operational On-Change subscription update from a data file. More... | |
boolean | agt_check_included_changes (agt_cfg_transaction_t *txcb, uint32 included_changes, obj_template_t *targobj) |
Check an edit transaction to see if it has any edits that match the included_changes bitmask parameter. More... | |
status_t | agt_add_leafy (val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, const xmlChar *leafstrval) |
make a child node from a string and add to parent. More... | |
status_t | agt_add_uint_leafy (val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, uint32 leafval) |
make a child node from a uint32 and add to parent. More... | |
status_t | agt_add_int_leafy (val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, int32 leafval) |
make a child node from a int32 and add to parent. More... | |
status_t | agt_add_uint64_leafy (val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, uint64 leafval) |
make a child node from a uint64 and add to parent. More... | |
status_t | agt_add_int64_leafy (val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, int64 leafval) |
make a child node from a int64 and add to parent. More... | |
status_t | agt_add_boolean_leafy (val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, boolean boolval) |
make a child node from a boolean and add to parent. More... | |
status_t | agt_add_idref_leafy (val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, const val_idref_t *leafval) |
make a child node from a val_idref_t struct and add to parent. More... | |
status_t | agt_add_bits_leafy (val_value_t *parentval, const xmlChar *modname, const xmlChar *leafname, const ncx_list_t *leafval) |
make a child node from a ncx_list_t struct (bits) and add to parent. More... | |
val_value_t * | agt_make_string_key (const xmlChar *leafval) |
make a generic key leaf node from a string More... | |
val_value_t * | agt_make_uint_key (uint32 leafval) |
make a generic key leaf node from a uint More... | |
val_value_t * | agt_make_int_key (int32 leafval) |
make a generic key leaf node from an int More... | |
val_value_t * | agt_make_uint64_key (uint64 leafval) |
make a generic key leaf node from a uint64 More... | |
val_value_t * | agt_make_int64_key (int64 leafval) |
make a generic key leaf node from an int64 More... | |
val_value_t * | agt_make_boolean_key (boolean leafval) |
make a generic key leaf node from a boolean More... | |
val_value_t * | agt_make_idref_key (const val_idref_t *leafval) |
make a generic key leaf node from an idref struct More... | |
val_value_t * | agt_make_bits_key (const ncx_list_t *leafval) |
make a generic key leaf node from a bits struct More... | |
status_t | agt_get_sid_set_id (xmlChar *buff, uint32 bufflen) |
Fill the buffer with the current sid-set-id value. More... | |
status_t | agt_xpath_force_true (struct xpath_pcb_t_ *pcb, val_value_t *context, val_value_t *docroot, boolean *result) |
XPath Boolean EVAL Replacement Callback. More... | |
agt_edit_parms_cb_t * | agt_new_edit_parms (const xmlChar *patch_id_str, boolean system_edit, boolean skip_sil, const xmlChar *comment) |
Create and initialize a SIL edit_parms control clock. More... | |
status_t | agt_init_edit_parms (agt_edit_parms_cb_t *parms, const xmlChar *patch_id_str, boolean system_edit, boolean skip_sil, const xmlChar *comment) |
Initialize a SIL edit_parms control clock. More... | |
void | agt_clean_edit_parms (agt_edit_parms_cb_t *parms) |
Clean a SIL edit_parms control clock. More... | |
void | agt_free_edit_parms (agt_edit_parms_cb_t *parms) |
Clean and free a SIL edit_parms control clock. More... | |
status_t | agt_add_patch_edit (agt_edit_parms_cb_t *parms, const xmlChar *edit_id_str, const xmlChar *edit_target, const xmlChar *edit_operation, const xmlChar *edit_xml_value, const xmlChar *insert_point, const xmlChar *insert_where) |
Create an edit request and add to YANG Patch in progress. More... | |
status_t | agt_apply_patch_edit (ses_cb_t *scb, agt_edit_parms_cb_t *parms) |
SIL version of the db_api_send_edt_full2 API. More... | |
Contains many general utilities useful for SIL and SIL-SA code to use.
Includes agt_make_ set of functions for constructing return data for GET2 callbacks. Includes many internal APIs used by the server, unrelated to specific YANG modules.
status_t agt_add_bits_leafy | ( | val_value_t * | parentval, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
const ncx_list_t * | leafval | ||
) |
make a child node from a ncx_list_t struct (bits) and add to parent.
Add a simple child to a container or list
A bits can also be set with agt_add_leafy using the string representation instead of the internal representation
parentval | parent value node to get new child |
modname | name of module defining leaf (may be NULL to pick parent) |
leafname | name of leaf to find (namespace hardwired) |
leafval | bits value for leaf |
status_t agt_add_boolean_leafy | ( | val_value_t * | parentval, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
boolean | boolval | ||
) |
make a child node from a boolean and add to parent.
Add a simple child to a container or list
parentval | parent value node to get new child |
modname | name of module defining leaf (may be NULL to pick parent) |
leafname | name of leaf to find (namespace hardwired) |
boolval | boolean value for leaf |
status_t agt_add_container | ( | const xmlChar * | modname, |
const xmlChar * | objname, | ||
val_value_t * | parentval, | ||
val_value_t ** | val | ||
) |
make a val_value_t struct for a specified nested container data node.
This is used by SIL functions to create a nested container which may have virtual nodes within it
This is for older GET1 callbacks. Use GET2 instead!
TBD: fine-control over SIL C code generation to allow mix of container virtual callback plus child node virtual node callbacks
modname | module name defining objname | |
objname | name of object node to create | |
parentval | parent value node to add container to | |
[out] | val | address of return val pointer *val pointer to node created in the database this is not live memory! It will be freed by the database management code |
status_t agt_add_idref_leafy | ( | val_value_t * | parentval, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
const val_idref_t * | leafval | ||
) |
make a child node from a val_idref_t struct and add to parent.
Add a simple child to a container or list
An identityref can also be set with agt_add_leafy using the string representation instead of the internal representation
parentval | parent value node to get new child |
modname | name of module defining leaf (may be NULL to pick parent) |
leafname | name of leaf to find (namespace hardwired) |
leafval | idref value for leaf |
status_t agt_add_int64_leafy | ( | val_value_t * | parentval, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
int64 | leafval | ||
) |
make a child node from a int64 and add to parent.
Add a simple child to a container or list
parentval | parent value node to get new child |
modname | name of module defining leaf (may be NULL to pick parent) |
leafname | name of leaf to find (namespace hardwired) |
leafval | number value for leaf |
status_t agt_add_int_leafy | ( | val_value_t * | parentval, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
int32 | leafval | ||
) |
make a child node from a int32 and add to parent.
Add a simple child to a container or list
parentval | parent value node to get new child |
modname | name of module defining leaf (may be NULL to pick parent) |
leafname | name of leaf to find (namespace hardwired) |
leafval | number value for leaf |
status_t agt_add_leafy | ( | val_value_t * | parentval, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
const xmlChar * | leafstrval | ||
) |
make a child node from a string and add to parent.
Add a simple child to a container or list
parentval | parent value node to get new child |
modname | name of module defining leaf (may be NULL to pick parent) |
leafname | name of leaf to find (namespace hardwired) |
leafstrval | string version of value to set for leaf |
status_t agt_add_patch_edit | ( | agt_edit_parms_cb_t * | parms, |
const xmlChar * | edit_id_str, | ||
const xmlChar * | edit_target, | ||
const xmlChar * | edit_operation, | ||
const xmlChar * | edit_xml_value, | ||
const xmlChar * | insert_point, | ||
const xmlChar * | insert_where | ||
) |
Create an edit request and add to YANG Patch in progress.
THIS API MUST ONLY BE USED WITHIN THE MAIN SERVER.
parms | edit parms in progress |
edit_id_str | index value for the edit |
edit_target | edit target path string |
edit_operation | edit operation (create merge replace delete remove) |
edit_xml_value | XML payload in string form, whitespace allowed MAY BE NULL if no value required (delete remove)) |
insert_point | a string like the target except a different instance of the same list of leaf-list; only for before, after; NULL if not used |
insert_where | == <insert enum string> (may be NULL if not used)
|
HACK: cut-and-paste from db_api_add_edit function
status_t agt_add_top_container | ( | obj_template_t * | obj, |
val_value_t ** | val | ||
) |
make a val_value_t struct for a specified top-level container data node.
This is for older GET1 callbacks. Use GET2 instead!
This is used by SIL functions to create a top-level container which may have virtual nodes within in it
TBD: fine-control over SIL C code generation to allow mix of container virtual callback plus child node virtual node callbacks
obj | object node of the container data node to create | |
[out] | val | address of return val pointer *val pointer to node created in the database this is not live memory! It will be freed by the database management code |
val_value_t * agt_add_top_node_if_missing | ( | ncx_module_t * | mod, |
const xmlChar * | objname, | ||
boolean * | added, | ||
status_t * | res | ||
) |
Add a top config node if it is missing.
SIL Phase 2 init: Check the running config to see if the specified node is there; if not create one return the node either way
mod | module containing object | |
objname | object name | |
[out] | added | address of return added flag *added TRUE if new node was added |
[out] | res | address of return status *res return status, return NULL unless NO_ERR |
status_t agt_add_top_virtual | ( | obj_template_t * | obj, |
getcb_fn_t | callbackfn | ||
) |
make a val_value_t struct for a specified virtual top-level data node
This is a SIL only API for creating a GET1 callback.
Use GET2 callbacks instead! GET1 is deprecated!
obj | object node of the virtual data node to create |
callbackfn | get callback function to install |
status_t agt_add_uint64_leafy | ( | val_value_t * | parentval, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
uint64 | leafval | ||
) |
make a child node from a uint64 and add to parent.
Add a simple child to a container or list
parentval | parent value node to get new child |
modname | name of module defining leaf (may be NULL to pick parent) |
leafname | name of leaf to find (namespace hardwired) |
leafval | number value for leaf |
status_t agt_add_uint_leafy | ( | val_value_t * | parentval, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
uint32 | leafval | ||
) |
make a child node from a uint32 and add to parent.
Add a simple child to a container or list
parentval | parent value node to get new child |
modname | name of module defining leaf (may be NULL to pick parent) |
leafname | name of leaf to find (namespace hardwired) |
leafval | number value for leaf |
boolean agt_any_operations_set | ( | val_value_t * | val | ) |
Check the new node and all descendants for any operation attibutes prsent.
val | value node to check |
status_t agt_apply_patch_edit | ( | ses_cb_t * | scb, |
agt_edit_parms_cb_t * | parms | ||
) |
SIL version of the db_api_send_edt_full2 API.
Create a YANG Patch edit request and invoke it locally. This patch can have exactly one edit. Provides full access to all 1-shot send_edit parameters.
THIS API MUST ONLY BE USED WITHIN THE MAIN SERVER.
scb | session control block for real session that is altering the datastore as a side effect of the RPC operation in progress |
parms | == agt_edit_parms_cb_t struct
|
boolean agt_apply_this_node | ( | op_editop_t | editop, |
const val_value_t * | newnode, | ||
const val_value_t * | curnode | ||
) |
Check if the write operation applies to the current node.
editop | edit operation value |
newnode | pointer to new node (if any) |
curnode | pointer to current value node (if any) (just used to check if non-NULL or compare leaf) |
boolean agt_apply_this_node_ex | ( | op_editop_t | editop, |
const val_value_t * | newnode, | ||
const val_value_t * | curnode, | ||
boolean | ignore_defaults, | ||
boolean | childonly, | ||
boolean | top_replace | ||
) |
Check if the write operation applies to the current node.
Extended.
editop | edit operation value |
newnode | pointer to new node (if any) |
curnode | pointer to current value node (if any) (just used to check if non-NULL or compare leaf) |
ignore_defaults | TRUE if no special default handling FALSE if missing default leaf not considered a true result |
childonly | TRUE to look just 1 level for comparison FALSE to compare all descendant nodes of complex types Used only for REPLACE operation |
top_replace | TRUE if top replace in progress FALSE if regular handling |
boolean agt_backups_enabled | ( | void | ) |
Check if the backup commands are enabled.
boolean agt_check_basic | ( | xml_msg_hdr_t * | mhdr, |
ncx_withdefaults_t | withdef, | ||
boolean | realtest, | ||
val_value_t * | node | ||
) |
Used by the <get-data> operation to return basic filtering NMDA, module-tags, tstamps filtered data.
val_nodetest_fn_t callback
mhdr | message header |
withdef | with-defaults value in affect |
realtest | FALSE to just check object properties in the val->obj template TRUE if OK to check the other fields |
node | pointer to the value struct to check |
status_t agt_check_cache | ( | val_value_t ** | cacheptr, |
val_value_t * | newval, | ||
val_value_t * | curval, | ||
op_editop_t | editop | ||
) |
check if a cache pointer needs to be changed or NULLed out
The auto-generated cache is deprecated. It is for GET1 callbacks. Use GET2 instead.
[in,out] | cacheptr | address of pointer to cache value node *cacheptr may be changed, depending on the operation |
newval | newval from the callback function | |
curval | curval from the callback function | |
editop | editop from the callback function |
boolean agt_check_config | ( | xml_msg_hdr_t * | mhdr, |
ncx_withdefaults_t | withdef, | ||
boolean | realtest, | ||
val_value_t * | node | ||
) |
Used by the <get-config> operation to return any type of configuration data.
mhdr | message header |
withdef | with-defaults value in affect |
realtest | FALSE to just check object properties in the val->obj template TRUE if OK to check the other fields |
node | pointer to the value struct to check |
boolean agt_check_config_false | ( | xml_msg_hdr_t * | mhdr, |
ncx_withdefaults_t | withdef, | ||
boolean | realtest, | ||
val_value_t * | node | ||
) |
Used by the <get*> operation to return only config=false nodes and the ID ancestor nodes.
val_nodetest_fn_t callback
mhdr | message header |
withdef | with-defaults value in affect |
realtest | FALSE to just check object properties in the val->obj template TRUE if OK to check the other fields |
node | pointer to the value struct to check |
boolean agt_check_config_false_default | ( | xml_msg_hdr_t * | mhdr, |
ncx_withdefaults_t | withdef, | ||
boolean | realtest, | ||
val_value_t * | node | ||
) |
Used by the <get> operation to return only content=nonconfig nodes and the ID ancestor node and only values not set to the default except if it is a container with counters.
val_nodetest_fn_t callback
mhdr | message header |
withdef | with-defaults value in affect |
realtest | FALSE to just check object properties in the val->obj template TRUE if OK to check the other fields |
node | pointer to the value struct to check |
boolean agt_check_default | ( | xml_msg_hdr_t * | mhdr, |
ncx_withdefaults_t | withdef, | ||
boolean | realtest, | ||
val_value_t * | node | ||
) |
Used by the <get*> operation to return only values not set to the default.
Matches ncx/val_util.h (val_nodetest_fn_t)
mhdr | message header |
withdef | with-defaults value in affect |
realtest | FALSE to just check object properties in the val->obj template TRUE if OK to check the other fields |
node | pointer to the value struct to check |
boolean agt_check_delete_all_allowed | ( | obj_template_t * | testobj | ) |
Check if the delete-all or remove-all operation is enabled for for specified object.
testobj | object to check |
status_t agt_check_editop | ( | op_editop_t | pop, |
op_editop_t * | cop, | ||
val_value_t * | newnode, | ||
val_value_t * | curnode, | ||
ncx_iqual_t | iqual, | ||
ncx_protocol_t | proto, | ||
boolean | is_commit, | ||
boolean * | delete_default | ||
) |
Check if the edit operation is okay.
Used internally by the server to process edit-config operation attribute values.
pop | parent edit operation in affect Starting at the data root, the parent edit-op is derived from the default-operation parameter | |
[out] | cop | address of child operation (MAY BE ADJUSTED ON EXIT!!!) This is the edit-op field in the new node corresponding to the curnode position in the data model *cop may be adjusted to simplify further processing, based on the following reduction algorithm: |
create, replace, and delete operations are 'sticky'. Once set, any nested edit-ops must be valid within the context of the fixed operation (create or delete) and the child operation gets changed to the sticky parent edit-op
if the parent is create or delete, and the child is merge or replace, then the child can be ignored and will be changed to the parent, since the create or delete must be carried through all the way to the leaves
newnode | pointer to new node in the edit-config PDU | |
curnode | pointer to the current node in the data model being affected by this operation, if any. NULL if no current node exists | |
iqual | effective instance qualifier for this value | |
proto | protocol in use | |
is_commit | TRUE if this is a commit operation; FALSE if not | |
[out] | delete_default | address of return delete default flag *delete_default TRUE if this is an attempt to delete or remove a default node; FALSE if not |
boolean agt_check_included_changes | ( | agt_cfg_transaction_t * | txcb, |
uint32 | included_changes, | ||
obj_template_t * | targobj | ||
) |
Check an edit transaction to see if it has any edits that match the included_changes bitmask parameter.
Used by YANG Push to filter out push-change-update notifications for a subscription
txcb | transaction CB to use to check |
included_changes | mask to check see agt_push_change_t flags in agt_push.h |
targobj | the target object to check for NULL for full datastore subscriptions |
status_t agt_check_max_access | ( | val_value_t * | newval, |
boolean | cur_exists | ||
) |
Check if the max-access for a parameter is exceeded.
newval | value node from PDU to check |
cur_exists | TRUE if the corresponding node in the target exists |
boolean agt_check_modtags | ( | xml_msg_hdr_t * | mhdr, |
ncx_withdefaults_t | withdef, | ||
boolean | realtest, | ||
val_value_t * | node | ||
) |
Used by the <get> and <get-config> operation to return report-all module-tags filtered data.
val_nodetest_fn_t callback
mhdr | message header |
withdef | with-defaults value in affect |
realtest | FALSE to just check object properties in the val->obj template TRUE if OK to check the other fields |
node | pointer to the value struct to check |
boolean agt_check_save | ( | xml_msg_hdr_t * | mhdr, |
ncx_withdefaults_t | withdef, | ||
boolean | realtest, | ||
val_value_t * | node | ||
) |
Used by agt_ncx_cfg_save function to filter just what is supposed to be saved in the <startup> config file.
val_nodetest_fn_t callback
mhdr | message header |
withdef | with-defaults value in affect |
realtest | FALSE to just check object properties in the val->obj template TRUE if OK to check the other fields |
node | pointer to the value struct to check |
void agt_clean_edit_parms | ( | agt_edit_parms_cb_t * | parms | ) |
Clean a SIL edit_parms control clock.
THIS API MUST ONLY BE USED WITHIN THE MAIN SERVER.
parms | struct to clean |
int agt_connect_client | ( | const xmlChar * | hostname, |
uint16_t | port | ||
) |
Start a TCP connection to a client.
Internal API used by the server
hostname | address of DNS name of client |
port | TCP port number to use |
agt_crl_mode_t agt_crl_mode_enum | ( | const xmlChar * | crl_mode | ) |
Get the enum for the CRL mode string.
crl_mode | string to check |
const xmlChar * agt_crl_mode_str | ( | agt_crl_mode_t | crl_mode | ) |
Get the string for the CRL mode enum.
crl_mode | enum to check |
op_editop_t agt_cvt_editop | ( | op_editop_t | editop, |
const val_value_t * | newval, | ||
const val_value_t * | curval | ||
) |
Determine the effective edit (if OP_EDITOP_COMMIT)
No change unless editop == OP_EDITOP_COMMIT
editop | the edit operation to check |
newval | the new value |
curval | the current value |
op_editop_t agt_cvt_editop_acm | ( | op_editop_t | editop, |
const val_value_t * | newval, | ||
const val_value_t * | curval | ||
) |
Determine the effective edit for NACM.
editop | the edit operation to check |
newval | the new value |
curval | the current value |
op_editop_t agt_cvt_editop_ex | ( | op_editop_t | editop, |
const val_value_t * | newval, | ||
const val_value_t * | curval | ||
) |
Determine the effective edit (if OP_EDITOP_COMMIT) Do not convert COMMIT to REPLACE same as cvt_editop.
editop | the edit operation to check |
newval | the new value |
curval | the current value |
status_t agt_disable_feature | ( | const xmlChar * | modname, |
const xmlChar * | featurename | ||
) |
Disable a YANG feature in the server.
This will not be detected by any sessions in progress!!! It will take affect the next time a <hello> message is sent by the server
modname | module name containing the feature |
featurename | feature name to disable |
status_t agt_enable_feature | ( | const xmlChar * | modname, |
const xmlChar * | featurename | ||
) |
Enable a YANG feature in the server.
This will not be detected by any sessions in progress!!! It will take affect the next time a <hello> message is sent by the server
modname | module name containing the feature |
featurename | feature name to enable |
status_t agt_fill_dummy_method | ( | const xmlChar * | modname, |
const xmlChar * | rpcname, | ||
xml_node_t * | node, | ||
obj_template_t ** | rpcobj | ||
) |
Fill the xml_node with the proper data to fake an XML node for the start of the rpc-method element.
MUST CALL xml_init_node for 'node' BEFORE CALLING THIS FUNCTION MUST CALL xml_clean_node AFTER CALLING THIS FUNCTION
modname | module name of the object | |
rpcname | name of the RPC node | |
[out] | node | address of node to fill in *node filled in |
[out] | rpcobj | address of return RPC method node *rpcobj set to object set |
status_t agt_find_in_datastore | ( | ncx_cfg_t | cfg_id, |
val_value_t * | err_value, | ||
val_value_t ** | retval | ||
) |
Find the node (should be from an <edit-config> content node) in the specified datastore.
The server will generate an instance-identifier for err_value
and then look for it with XPath. The result node if found is returned in *retval
cfg_id | enum for target datastore to search | |
err_value | node from a PDU or different datastore to find | |
[out] | retval | address of return value *retval return value if found in datastore |
void agt_free_edit_parms | ( | agt_edit_parms_cb_t * | parms | ) |
Clean and free a SIL edit_parms control clock.
THIS API MUST ONLY BE USED WITHIN THE MAIN SERVER.
parms | struct to clean and free |
obj_template_t * agt_get_action_output_obj | ( | val_value_t * | actionval | ) |
Get the action output object template.
actionval | action value node passed to action callback |
status_t agt_get_cfg_from_parm | ( | const xmlChar * | parmname, |
rpc_msg_t * | msg, | ||
xml_node_t * | methnode, | ||
cfg_template_t ** | retcfg | ||
) |
FUNCTION agt_get_cfg_from_parm.
Get the cfg_template_t for the config in the target param
parmname | parameter to get from (e.g., target) | |
msg | incoming rpc_msg_t in progress | |
methnode | XML node for RPC method (for errors) | |
[out] | retcfg | address of return cfg pointer *retcfg is set to the address of the cfg_template_t struct |
Get the enum ID of the configuration that is being edited.
rpcmsg | RPC message to check |
uint32 agt_get_error_count | ( | rpc_msg_t * | msg | ) |
Get the current number of errors in the rpc msg Q.
msg | RPC message to check |
xmlChar * agt_get_filespec_from_url | ( | const xmlChar * | urlstr, |
status_t * | res | ||
) |
Check the URL and get the filespec part out of it.
urlstr | URL to check | |
[out] | res | address of return status; *res return status |
val_value_t * agt_get_first_result_val | ( | xpath_result_t * | result | ) |
Get the first XPath result node or NULL if not node-set or empty node-set or not value node.
result | XPath result to get first resnode from |
status_t agt_get_inline_cfg_from_parm | ( | const xmlChar * | parmname, |
rpc_msg_t * | msg, | ||
xml_node_t * | methnode, | ||
val_value_t ** | retval | ||
) |
Get the val_value_t node for the inline config element.
parmname | parameter to get from (e.g., source) | |
msg | incoming rpc_msg_t in progress | |
methnode | XML node for RPC method (for errors) | |
[out] | retval | address of return value node pointer *retval is set to the address of the val_value_t struct |
val_value_t * agt_get_key_value | ( | val_value_t * | startval, |
val_value_t ** | lastkey | ||
) |
Get the next expected key value in the ancestor chain.
Used in Yuma SIL code to invoke User SIL callbacks with key values
startval | value node to start from | |
[out] | lastkey | address of last key leaf found in ancestor chain caller maintains this state-var as the anscestor keys are traversed NULL to get the first key *lastkey updated with the return value if key found |
boolean agt_get_ok_for_nolock | ( | rpc_msg_t * | msg | ) |
Check if the get has filters and if they are OK for a <get> without waiting for a pthreads filter.
This should be OK for top-level config=false data nodes
msg | request message to check |
const val_value_t * agt_get_parmval | ( | const xmlChar * | parmname, |
rpc_msg_t * | msg | ||
) |
Get the identified val_value_t for a given parameter.
Used for error purposes!
parmname | parameter to get |
msg | incoming rpc_msg_t in progress |
xpath_result_t * agt_get_result_from_xpath | ( | xpath_pcb_t * | pcb, |
val_value_t * | rootval, | ||
status_t * | retres | ||
) |
Get the result from evaluating an XPath expression.
pcb | XPath parser control block to get result from | |
rootval | document root for XPath evaluation | |
[out] | retres | address of return status; *retres return status |
val_value_t * agt_get_rpc_input | ( | rpc_msg_t * | msg | ) |
Get the rpc input value node.
msg | RPC message to check |
obj_template_t * agt_get_rpc_output_obj | ( | rpc_msg_t * | msg | ) |
Get the rpc output object template.
msg | RPC message to check |
status_t agt_get_sid_set_id | ( | xmlChar * | buff, |
uint32 | bufflen | ||
) |
Fill the buffer with the current sid-set-id value.
Constructed from the server-id and the module-set-id
buff | buffer to fill in |
bufflen | == length of buffer |
xmlChar * agt_get_startup_filespec | ( | status_t * | res | ) |
Figure out where to store the startup file.
[out] | res | address of return status; *res return status |
xmlChar * agt_get_target_filespec | ( | const xmlChar * | target_url, |
status_t * | res | ||
) |
Figure out where to store the URL target file.
target_url | target url spec to use; this is treated as a relative pathspec, and the appropriate data directory is used to create this file | |
[out] | res | address of return status; *res return status |
status_t agt_get_url_from_parm | ( | const xmlChar * | parmname, |
rpc_msg_t * | msg, | ||
xml_node_t * | methnode, | ||
const xmlChar ** | returl, | ||
val_value_t ** | retval | ||
) |
Get the URL string for the config in the target param.
Used by <edit-config> operation
1) an edit-content choice for edit-config 2) a source or target config-choice option for copy-config 3) a target of delete-config 4) config-source choice option for validate
parmname | parameter to get from (e.g., target) | |
msg | incoming rpc_msg_t in progress | |
methnode | XML node for RPC method (for errors) | |
[out] | returl | address of return URL string pointer *returl is set to the address of the URL string pointing to the memory inside the found parameter |
[out] | retval | address of value node from input used *retval is set to parm node found, if return NO_ERR |
boolean agt_getbulk_ok_for_nolock | ( | const xmlChar * | pathstr | ) |
Check if the get-bulk target is OK for a nolock get without waiting for a pthreads filter.
This should be OK for top-level config=false data nodes
pathstr | path string from the request message to check |
const xmlChar * agt_getTermReasonStr | ( | ses_term_reason_t | termreason | ) |
Convert the termination reason enum to a string.
termreason | enum for the terminationReason leaf |
val_value_t * agt_init_cache | ( | const xmlChar * | modname, |
const xmlChar * | objname, | ||
status_t * | res | ||
) |
init a cache pointer during the init2 callback
The auto-generated cache is deprecated. It is for GET1 callbacks. Use GET2 instead.
modname | name of module defining the top-level object | |
objname | name of the top-level database object | |
[out] | res | address of return status; *res is set to the return status |
status_t agt_init_edit_parms | ( | agt_edit_parms_cb_t * | parms, |
const xmlChar * | patch_id_str, | ||
boolean | system_edit, | ||
boolean | skip_sil, | ||
const xmlChar * | comment | ||
) |
Initialize a SIL edit_parms control clock.
THIS API MUST ONLY BE USED WITHIN THE MAIN SERVER.
[out] | parms | struct to initialize |
patch_id_str | string to use as the patch ID NULL to use the default patch-id field | |
system_edit | TRUE if this edit is from the system FALSE if this is a user edit subject to access control | |
skip_sil | TRUE to skip, FALSE to not skip | |
comment | comment string or NULL to use default |
val_value_t * agt_make_bits_key | ( | const ncx_list_t * | leafval | ) |
make a generic key leaf node from a bits struct
For use with the agt_not_add_key API only!
leafval | bits value to set for leaf |
val_value_t * agt_make_bits_leaf | ( | obj_template_t * | parentobj, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
const ncx_list_t * | listval, | ||
status_t * | res | ||
) |
make a val_value_t struct for a specified leaf or leaf-list (NCX_BT_BITS or NCX_BT_SLIST)
parentobj | parent object to find child leaf object | |
modname | name of module defining leaf (may be NULL to pick parent) | |
leafname | name of leaf to find (namespace hardwired) | |
listval | bits value for leaf | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_boolean_key | ( | boolean | leafval | ) |
make a generic key leaf node from a boolean
For use with the agt_not_add_key API only!
leafval | boolean value to set for leaf |
val_value_t * agt_make_boolean_leaf | ( | obj_template_t * | parentobj, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
boolean | boolval, | ||
status_t * | res | ||
) |
make a val_value_t struct for a specified leaf or leaf-list (NCX_BT_BOOL)
parentobj | parent object to find child leaf object | |
modname | name of module defining leaf (may be NULL to pick parent) | |
leafname | name of leaf to find (namespace hardwired) | |
boolval | boolean value for leaf | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_empty_leaf | ( | obj_template_t * | parentobj, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
boolean | boolval, | ||
status_t * | res | ||
) |
make a val_value_t struct for a specified leaf or leaf-list (NCX_BT_EMPTY)
parentobj | parent object to find child leaf object | |
modname | name of module defining leaf (may be NULL to pick parent) | |
leafname | name of leaf to find (namespace hardwired) | |
boolval | ignored boolean value for leaf | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_idref_key | ( | const val_idref_t * | leafval | ) |
make a generic key leaf node from an idref struct
For use with the agt_not_add_key API only!
leafval | idref value to set for leaf |
val_value_t * agt_make_idref_leaf | ( | obj_template_t * | parentobj, |
const xmlChar * | leafname, | ||
const val_idref_t * | leafval, | ||
status_t * | res | ||
) |
make an identityref val_value_t struct for a specified leaf or leaf-list
This is a main API for SIL and SIL-SA code to construct return data for GET2 callbacks.
parentobj | parent object to find child leaf object | |
leafname | name of leaf to find (namespace hardwired) | |
leafval | identityref value for leaf | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_idref_leaf2 | ( | obj_template_t * | parentobj, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
const val_idref_t * | leafval, | ||
status_t * | res | ||
) |
make a val_value_t struct for a specified leaf or leaf-list
Similiar to agt_make_idref_leaf except this API allows augmented child nodes to be accessed.
A val_idref_t must be available to use this function Start with a val_value_t of base type NCX_BT_IDREF
Use macro VAL_IDREF(val) to access to struct for leafval
parentobj | parent object to find child leaf object | |
modname | name of module defining leaf (may be NULL to pick parent) | |
leafname | name of leaf to find (namespace hardwired) | |
leafval | identityref value for leaf | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_int64_key | ( | int64 | leafval | ) |
make a generic key leaf node from an int64
For use with the agt_not_add_key API only!
leafval | int64 value to set for leaf |
val_value_t * agt_make_int64_leaf | ( | obj_template_t * | parentobj, |
const xmlChar * | leafname, | ||
int64 | leafval, | ||
status_t * | res | ||
) |
make an int64 val_value_t struct for a specified leaf or leaf-list
This is a main API for SIL and SIL-SA code to construct return data for GET2 callbacks.
parentobj | parent object to find child leaf object | |
leafname | name of leaf to find (namespace hardwired) | |
leafval | int64 number value for leaf | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_int64_leaf2 | ( | obj_template_t * | parentobj, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
int64 | leafval, | ||
status_t * | res | ||
) |
make a val_value_t struct for a specified leaf or leaf-list
Similiar to agt_make_int64_leaf except this API allows augmented child nodes to be accessed.
parentobj | parent object to find child leaf object | |
modname | name of module defining leaf (may be NULL to pick parent) | |
leafname | name of leaf to find (namespace hardwired) | |
leafval | number value for leaf | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_int_key | ( | int32 | leafval | ) |
make a generic key leaf node from an int
For use with the agt_not_add_key API only!
leafval | int value to set for leaf |
val_value_t * agt_make_int_leaf | ( | obj_template_t * | parentobj, |
const xmlChar * | leafname, | ||
int32 | leafval, | ||
status_t * | res | ||
) |
make an int32 val_value_t struct for a specified leaf or leaf-list
This is a main API for SIL and SIL-SA code to construct return data for GET2 callbacks.
parentobj | parent object to find child leaf object | |
leafname | name of leaf to find (namespace hardwired) | |
leafval | integer number value for leaf | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_int_leaf2 | ( | obj_template_t * | parentobj, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
int32 | leafval, | ||
status_t * | res | ||
) |
make a val_value_t struct for a specified leaf or leaf-list
Similiar to agt_make_uint_leaf except this API allows augmented child nodes to be accessed.
parentobj | parent object to find child leaf object | |
modname | name of module defining leaf (may be NULL to pick parent) | |
leafname | name of leaf to find (namespace hardwired) | |
leafval | number value for leaf | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_leaf | ( | obj_template_t * | parentobj, |
const xmlChar * | leafname, | ||
const xmlChar * | leafstrval, | ||
status_t * | res | ||
) |
make a string val_value_t struct for a specified leaf or leaf-list
This is a main API for SIL and SIL-SA code to construct return data for GET2 callbacks.
parentobj | parent object to find child leaf object | |
leafname | name of leaf to find (namespace hardwired) | |
leafstrval | string version of value to set for leaf | |
[out] | res | address of return status; *res=return status |
val_value_t * agt_make_leaf2 | ( | obj_template_t * | parentobj, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
const xmlChar * | leafstrval, | ||
status_t * | res | ||
) |
make a val_value_t struct for a specified leaf or leaf-list
Similiar to agt_make_leaf except this API allows augmented child nodes to be accessed.
parentobj | parent object to find child leaf object | |
modname | name of module defining leaf (may be NULL to pick parent) | |
leafname | name of leaf to find (namespace hardwired) | |
leafstrval | string version of value to set for leaf | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_list | ( | obj_template_t * | parentobj, |
const xmlChar * | listname, | ||
status_t * | res | ||
) |
make a val_value_t struct for a specified list
Note that the list is not complete and not ready upon exit. The list keys need to be added and then the val_gen_index_chain must be called
parentobj | parent object to find child leaf object | |
listname | name of list object to find (namespace hardwired) | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_object | ( | obj_template_t * | parentobj, |
const xmlChar * | objname, | ||
status_t * | res | ||
) |
make a val_value_t struct for a specified node
parentobj | parent object to find child leaf object | |
objname | name of the object to find (namespace hardwired) | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_object2 | ( | obj_template_t * | parentobj, |
const xmlChar * | modname, | ||
const xmlChar * | objname, | ||
status_t * | res | ||
) |
make a val_value_t struct for a specified node
Similiar to agt_make_object except this API allows augmented child nodes to be accessed.
parentobj | parent object to find child leaf object | |
modname | module name that defines objname | |
objname | name of the object to find | |
[out] | res | address of return status; *res return status |
xmlChar * agt_make_srid_filespec | ( | const xmlChar * | basestr, |
const xmlChar * | patstr, | ||
const xmlChar * | valstr | ||
) |
Make a filespec string needed for a filespec with SRID in it.
basestr | plain filespec used for length check
|
patstr | pattern string with 1 's' in it for the valstr
|
valstr | This is expected to be the server root ID string
|
NULL | if malloc error |
val_value_t * agt_make_string_key | ( | const xmlChar * | leafval | ) |
make a generic key leaf node from a string
For use with the agt_not_add_key API only!
leafval | string version of value to set for leaf |
val_value_t * agt_make_uint64_key | ( | uint64 | leafval | ) |
make a generic key leaf node from a uint64
For use with the agt_not_add_key API only!
leafval | uint64 value to set for leaf |
val_value_t * agt_make_uint64_leaf | ( | obj_template_t * | parentobj, |
const xmlChar * | leafname, | ||
uint64 | leafval, | ||
status_t * | res | ||
) |
make a uint64 val_value_t struct for a specified leaf or leaf-list
This is a main API for SIL and SIL-SA code to construct return data for GET2 callbacks.
parentobj | parent object to find child leaf object | |
leafname | name of leaf to find (namespace hardwired) | |
leafval | uint64 number value for leaf | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_uint64_leaf2 | ( | obj_template_t * | parentobj, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
uint64 | leafval, | ||
status_t * | res | ||
) |
make a val_value_t struct for a specified leaf or leaf-list
Similiar to agt_make_uint64_leaf except this API allows augmented child nodes to be accessed.
parentobj | parent object to find child leaf object | |
modname | name of module defining leaf (may be NULL to pick parent) | |
leafname | name of leaf to find (namespace hardwired) | |
leafval | number value for leaf | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_uint_key | ( | uint32 | leafval | ) |
make a generic key leaf node from a uint
For use with the agt_not_add_key API only!
leafval | uint value to set for leaf |
val_value_t * agt_make_uint_leaf | ( | obj_template_t * | parentobj, |
const xmlChar * | leafname, | ||
uint32 | leafval, | ||
status_t * | res | ||
) |
make a uint32 val_value_t struct for a specified leaf or leaf-list
This is a main API for SIL and SIL-SA code to construct return data for GET2 callbacks.
parentobj | parent object to find child leaf object | |
leafname | name of leaf to find (namespace hardwired) | |
leafval | number value for leaf | |
[out] | res | address of return status; *res=return status |
val_value_t * agt_make_uint_leaf2 | ( | obj_template_t * | parentobj, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
uint32 | leafval, | ||
status_t * | res | ||
) |
make a val_value_t struct for a specified leaf or leaf-list
Similiar to agt_make_uint_leaf except this API allows augmented child nodes to be accessed.
parentobj | parent object to find child leaf object | |
modname | name of module defining leaf (may be NULL to pick parent) | |
leafname | name of leaf to find (namespace hardwired) | |
leafval | number value for leaf | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_union_leaf | ( | obj_template_t * | parentobj, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
const val_value_t * | leafval, | ||
status_t * | res | ||
) |
make a val_value_t struct for a specified leaf or leaf-list use a val_value_t for a union
parentobj | parent object to find child leaf object | |
modname | name of module defining leaf (may be NULL to pick parent) | |
leafname | name of leaf to find (namespace hardwired) | |
leafval | val_value_t union val | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_virtual_leaf | ( | obj_template_t * | parentobj, |
const xmlChar * | leafname, | ||
getcb_fn_t | callbackfn, | ||
status_t * | res | ||
) |
make a val_value_t struct for a specified virtual leaf or leaf-list
This is a SIL only API for creating a GET1 callback.
Use GET2 callbacks instead! GET1 is deprecated!
!!! This function works on all value node types !!! !!! Check for leaf or leaf-list removed !!!
parentobj | parent object to find child leaf object | |
leafname | name of leaf to find (namespace hardwired) | |
callbackfn | get callback function to install | |
[out] | res | address of return status; *res return status |
val_value_t * agt_make_virtual_leaf2 | ( | obj_template_t * | parentobj, |
const xmlChar * | modname, | ||
const xmlChar * | leafname, | ||
getcb_fn_t | callbackfn, | ||
status_t * | res | ||
) |
make a val_value_t struct for a specified virtual leaf or leaf-list
Similiar to agt_make_virtual_leaf except this API allows augmented child nodes to be accessed.
!!! This function works on all value node types !!! !!! Check for leaf or leaf-list removed !!!
parentobj | parent object to find child leaf object | |
modname | module name that defines objname | |
leafname | name of leaf to find (namespace hardwired) | |
callbackfn | get callback function to install | |
[out] | res | address of return status; *res return status |
yang_patch_cb_t * agt_make_yang_patch_cb | ( | const xmlChar * | patch_id, |
const xmlChar * | the_comment, | ||
const xmlChar * | patch_root, | ||
agt_cfg_transaction_t * | txcb, | ||
uint32 | included_changes | ||
) |
Make a yang_patch_cb for a YANG Patch conventional datastore on-change update.
Used by RESTCONF and DB-API for edits
patch_id | patch-id field (may be NULL) |
the_comment | comment field (may be NULL) |
patch_root | patch root string (may be NULL) |
txcb | transaction CB to use to convert to yang patch |
included_changes | mask to check for edit types to include see agt_push_change_t flags in agt_push.h |
yang_patch_cb_t * agt_make_yang_patch_cb_file | ( | const xmlChar * | patch_id, |
const xmlChar * | the_comment, | ||
const xmlChar * | patch_root, | ||
const xmlChar * | filespec | ||
) |
Make a yang_patch_cb for a Simulated Operational On-Change subscription update from a data file.
Used by YANG Push for an update record
patch_id | patch-id field (may be NULL) |
the_comment | comment field (may be NULL) |
patch_root | patch root string (may be NULL) |
filespec | file containing the data to send |
yang_patch_cb_t * agt_make_yang_patch_cb_targobj | ( | const xmlChar * | patch_id, |
const xmlChar * | the_comment, | ||
const xmlChar * | patch_root, | ||
agt_cfg_transaction_t * | txcb, | ||
uint32 | included_changes, | ||
obj_template_t * | targobj | ||
) |
Make a yang_patch_cb for a YANG Patch conventional datastore on-change update for a target object.
Used by RESTCONF and DB-API for edits
patch_id | patch-id field (may be NULL) |
the_comment | comment field (may be NULL) |
patch_root | patch root string (may be NULL) |
txcb | transaction CB to use to convert to yang patch |
included_changes | mask to check for edit types to include see agt_push_change_t flags in agt_push.h |
targobj | object to make patch for |
boolean agt_match_etag | ( | val_value_t * | val, |
const xmlChar * | etag | ||
) |
Check if the etag matches the specified value string.
val | value node to check |
etag | etag string to check |
boolean agt_match_etag_binary | ( | val_value_t * | val, |
ncx_etag_t | etag | ||
) |
Check if the etag matches the specified value string.
Start with a binary etag, not a string
val | value node to check |
etag | etag to check |
boolean agt_modified_since | ( | val_value_t * | val, |
time_t * | timerec | ||
) |
Check if the timestamp for the object is later then the specified timestamp.
val | value node to check |
timerec | timestamp string converted to time_t to check |
boolean agt_module_in_cli_valset | ( | const xmlChar * | modname | ) |
Check if there is a module=foo parameter in the CLI parameter set.
modname | module name to find |
agt_edit_parms_cb_t * agt_new_edit_parms | ( | const xmlChar * | patch_id_str, |
boolean | system_edit, | ||
boolean | skip_sil, | ||
const xmlChar * | comment | ||
) |
Create and initialize a SIL edit_parms control clock.
THIS API MUST ONLY BE USED WITHIN THE MAIN SERVER.
patch_id_str | string to use as the patch ID NULL to use the default patch-id field |
system_edit | TRUE if this edit is from the system FALSE if this is a user edit subject to access control |
skip_sil | TRUE to skip, FALSE to not skip |
comment | comment string or NULL to use default |
xpath_pcb_t * agt_new_xpath_pcb | ( | ses_cb_t * | scb, |
const xmlChar * | expr, | ||
status_t * | res | ||
) |
Get a new XPath parser control block and set up the server variable bindings.
scb | session evaluating the XPath expression | |
expr | expression string to use (may be NULL) | |
[out] | res | address of return status; *res return status |
boolean agt_notifications_enabled | ( | void | ) |
Check if notifications are enabled.
boolean agt_op_ok_for_maintenance_mode | ( | const obj_template_t * | rpcobj | ) |
Check if the operation is OK for maintenance mode.
rpcobj | RPC template structure to check currently using just name but may use YANG extension in the future |
output no data for the get or get-config operation because the if-modified-since fileter did not pass
scb | session control block |
msg | RPC request in progress |
indent | start indent amount; ignored if the server is configured not to use PDU indentation |
void agt_output_end_container | ( | ses_cb_t * | scb, |
xml_msg_hdr_t * | mhdr, | ||
xmlns_id_t | node_nsid, | ||
const xmlChar * | node_name, | ||
int32 | indent | ||
) |
Output an end container node.
Internal API used by the server
scb | session to use |
mhdr | message header to use |
node_nsid | namespace ID of the container node |
node_name | local-name of the container node |
indent | starting indent |
output the proper data for the get or get-config operation generate the data that matched the subtree or XPath filter
scb | session control block |
msg | RPC request in progress |
indent | start indent amount; ignored if the server is configured not to use PDU indentation |
generate the YANG file contents for the get-schema operation
scb | session control block |
msg | RPC request in progress |
indent | start indent amount; ignored if the server is configured not to use PDU indentation |
void agt_output_start_container | ( | ses_cb_t * | scb, |
xml_msg_hdr_t * | mhdr, | ||
xmlns_id_t | parent_nsid, | ||
xmlns_id_t | node_nsid, | ||
const xmlChar * | node_name, | ||
int32 | indent | ||
) |
Output a start container node.
Internal API used by the server
scb | session to use |
mhdr | message header to use |
parent_nsid | namespace ID of the parent of the container node OK if this is zero (will force xmlns attr in XML) |
node_nsid | namespace ID of the container node |
node_name | local-name of the container node |
indent | starting indent |
void agt_output_start_errors_container | ( | ses_cb_t * | scb, |
xml_msg_hdr_t * | mhdr, | ||
xmlns_id_t | parent_nsid, | ||
xmlns_id_t | nsid, | ||
const xmlChar * | elname, | ||
const dlq_hdr_t * | attrQ, | ||
boolean | isattrq, | ||
int32 | indent, | ||
boolean | empty | ||
) |
Output a start <errors> element on the specified session for RESTCONF error handling.
Internal API used by the server
scb | session to use |
mhdr | message header to use |
parent_nsid | namespace ID of the parent of the container node OK if this is zero (will force xmlns attr in XML) |
nsid | namespace ID of the element elname |
elname | unqualified name of element to write |
attrQ | Q of xml_attr_t or val_value_t records to write in the element; NULL none |
isattrq | TRUE if the qQ contains xml_attr_t nodes FALSE if the Q contains val_value_t nodes (metadata) |
indent | starting indent |
empty | TRUE for empty node FALSE for start node |
void agt_output_start_node | ( | ses_cb_t * | scb, |
xml_msg_hdr_t * | mhdr, | ||
xmlns_id_t | parent_nsid, | ||
xmlns_id_t | node_nsid, | ||
const xmlChar * | node_name, | ||
int32 | indent, | ||
boolean | try_modname | ||
) |
Output a start node and try to use modname in front if needed.
Internal API used by the server
scb | session to use |
mhdr | message header to use |
parent_nsid | namespace ID of the parent of the container node OK if this is zero (will force xmlns attr in XML) |
node_nsid | namespace ID of the container node |
node_name | local-name of the container node |
indent | starting indent |
try_modname | TRUE to try to use modname |
void agt_output_start_node2 | ( | ses_cb_t * | scb, |
xml_msg_hdr_t * | mhdr, | ||
xmlns_id_t | parent_nsid, | ||
xmlns_id_t | node_nsid, | ||
const xmlChar * | node_name, | ||
int32 | indent, | ||
boolean | try_modname, | ||
val_value_t * | metaval | ||
) |
Output a start node and try to use modname in front if needed.
Can add metadata (XML attributes) to the start node.
Internal API used by the server
scb | session to use |
mhdr | message header to use |
parent_nsid | namespace ID of the parent of the container node OK if this is zero (will force xmlns attr in XML) |
node_nsid | namespace ID of the container node |
node_name | local-name of the container node |
indent | starting indent |
try_modname | TRUE to try to use modname |
metaval | the fake node to use for its metaQ These val_value_t nodes will be used in the begin element for XML output. NULL for no metadata |
void agt_record_attr_error | ( | ses_cb_t * | scb, |
xml_msg_hdr_t * | msghdr, | ||
ncx_layer_t | layer, | ||
status_t | res, | ||
const xml_attr_t * | xmlattr, | ||
const xml_node_t * | xmlnode, | ||
const xmlChar * | badns, | ||
ncx_node_t | nodetyp, | ||
void * | errnode | ||
) |
Generate an rpc_err_rec_t and save it in the msg.
This is called from the XML parser when an invalid or missing attribute is detected
scb | session control block | |
[in,out] | msghdr | XML msg header with error Q NULL, no errors will be recorded! msghdr->errQ has error message added if no malloc errors |
layer | netconf layer error occured | |
res | internal error code | |
xmlattr | XML attribute node causing error (NULL if not available) | |
xmlnode | XML node containing the attr | |
badns | bad namespace string value | |
nodetyp | type of node in 'errnode' | |
errnode | internal data node with the error NULL if not used |
void agt_record_error | ( | ses_cb_t * | scb, |
xml_msg_hdr_t * | msghdr, | ||
ncx_layer_t | layer, | ||
status_t | res, | ||
const xml_node_t * | xmlnode, | ||
ncx_node_t | parmtyp, | ||
const void * | error_info, | ||
ncx_node_t | nodetyp, | ||
void * | error_path | ||
) |
Generate an rpc_err_rec_t and save it in the msg.
This is the main SIL or SIL-SA API to return an <rpc-error> to the NETCONF or RESTCONF client.
[in,out] | scb | session control block NULL and no stats will be recorded scb->stats may be updated if scb non-NULL |
[in,out] | msghdr | XML msg header with error Q NULL, no errors will be recorded! msghdr->errQ has error message added if not NULL and no malloc errors |
layer | netconf layer error occured. Used for <error-type> field. | |
res | internal error code. Will get mapped to <error-tag> and <error-app-tag> | |
xmlnode | XML node causing error. Will be used for <bad-element> and maybe error <error-path> NULL if not available | |
parmtyp | type of node in 'error_info' | |
error_info | error data, specific to 'res'. Used to generate <error-info> sub-elements. NULL if not available (then nodetyp ignored) | |
nodetyp | type of node in 'error_path' | |
error_path | internal data node with the error. Used to generate the <error-path> field NULL if not available or not used |
void agt_record_error_errinfo | ( | ses_cb_t * | scb, |
xml_msg_hdr_t * | msghdr, | ||
ncx_layer_t | layer, | ||
status_t | res, | ||
const xml_node_t * | xmlnode, | ||
ncx_node_t | parmtyp, | ||
const void * | error_info, | ||
ncx_node_t | nodetyp, | ||
void * | error_path, | ||
const ncx_errinfo_t * | errinfo | ||
) |
Generate an rpc_err_rec_t and save it in the msg Use provided error fields.
This is the main SIL or SIL-SA API to return an <rpc-error> to the NETCONF or RESTCONF client.
[in,out] | scb | session control block NULL and no stats will be recorded scb->stats may be updated if scb non-NULL |
[in,out] | msghdr | XML msg header with error Q NULL, no errors will be recorded! msghdr->errQ has error message added if not NULL and no malloc errors |
layer | netconf layer error occured. Used for <error-type> field. | |
res | internal error code. Will get mapped to <error-tag> and <error-app-tag> | |
xmlnode | XML node causing error. Will be used for <bad-element> and maybe error <error-path> NULL if not available | |
parmtyp | type of node in 'error_info' | |
error_info | error data, specific to 'res'. Used to generate <error-info> sub-elements. NULL if not available (then nodetyp ignored) | |
nodetyp | type of node in 'error_path' | |
error_path | internal data node with the error. Used to generate the <error-path> field NULL if not available or not used | |
errinfo | error info record to use (may be NULL) |
void agt_record_error_obj | ( | ses_cb_t * | scb, |
xml_msg_hdr_t * | msghdr, | ||
status_t | res, | ||
obj_template_t * | errobj, | ||
const xmlChar * | badval | ||
) |
Generate an rpc_err_rec_t and save it in the msg Use the provided object for <rpc-error> fields.
scb | session control block to use |
msghdr | XML msg header with error Q |
res | error status code |
errobj | object node in API schema tree or data schema tree associated with the error |
badval | error-info node to use |
void agt_record_insert_error | ( | ses_cb_t * | scb, |
xml_msg_hdr_t * | msghdr, | ||
status_t | res, | ||
val_value_t * | errval | ||
) |
Generate an rpc_err_rec_t and save it in the msg Called from the YANG edit validation code when an invalid insert operation is detected.
For YANG 'missing-instance' error-app-tag
[in,out] | scb | session control block NULL and no stats will be recorded scb->stats may be updated if scb non-NULL |
[in,out] | msghdr | XML msg header with error Q NULL, no errors will be recorded! msghdr->errQ has error message added if no malloc errors |
res | internal error code. Used for <error-tag> and <error-app-tag> | |
errval | value node generating the insert error |
void agt_record_unique_error | ( | ses_cb_t * | scb, |
xml_msg_hdr_t * | msghdr, | ||
val_value_t * | errval, | ||
dlq_hdr_t * | valuniqueQ | ||
) |
Generate an rpc_err_rec_t and save it in the msg.
Used by the YANG validation code when a unique-stmt test fails
Use the provided error info record for <rpc-error> fields
For YANG 'data-not-unique' error-app-tag
[in,out] | scb | session control block NULL and no stats will be recorded scb->stats may be updated if scb non-NULL |
[in,out] | msghdr | XML msg header with error Q NULL, no errors will be recorded! msghdr->errQ has error message added if no malloc errors |
errval | list value node that contains the unique-stmt | |
valuniqueQ | Q of val_unique_t structs for error-info |
void agt_record_warning | ( | ses_cb_t * | scb, |
xml_msg_hdr_t * | msghdr, | ||
ncx_layer_t | layer, | ||
status_t | res, | ||
const xml_node_t * | xmlnode, | ||
ncx_node_t | parmtyp, | ||
const void * | error_parm, | ||
ncx_node_t | nodetyp, | ||
void * | error_path, | ||
const ncx_errinfo_t * | errinfo | ||
) |
Generate an rpc_err_rec_t and save it in the msg.
Not actually supported in NETCONF protocol because no standard error-tag values are defined for severity=warning
Use the provided error info record for <rpc-error> fields Set the error-severity field to warning instead of error but only if agt_with_warnings is TRUE
[in,out] | scb | session control block NULL and no stats will be recorded scb->stats may be updated if scb non-NULL |
[in,out] | msghdr | XML msg header with error Q NULL, no errors will be recorded! msghdr->errQ has error message added if not NULL and no malloc errors |
layer | netconf layer error occured. Used for <error-type> field. | |
res | internal error code. Will get mapped to <error-tag> and <error-app-tag> | |
xmlnode | XML node causing error. Will be used for <bad-element> and maybe error <error-path> NULL if not available | |
parmtyp | type of node in 'error_info' | |
error_parm | error data, specific to 'res'. Used to generate <error-info> sub-elements. NULL if not available (then nodetyp ignored) | |
nodetyp | type of node in 'error_path' | |
error_path | internal data node with the error. Used to generate the <error-path> field NULL if not available or not used | |
errinfo | error info record to use (may be NULL) |
void agt_set_basic_withdef_enabled | ( | void | ) |
Force the basic mode to be enabled in the agt_withdef_enabled bitmask.
Internal API to setup with-defaults handling
void agt_set_depth | ( | rpc_msg_t * | msg | ) |
Check if the <depth> parameter is set in the request message.
If so, then set the msg->mhdr.max_depth and cur_depth will be set
[in,out] | msg | rpc message in progress |
void agt_set_depth_nmda | ( | rpc_msg_t * | msg | ) |
Check if the <depth> parameter is set NMDA max-depth parameter in the request message If so, then set the msg->mhdr.max_depth and cur_depth will be set.
[in,out] | msg | rpc message in progress |
status_t agt_set_mod_defaults | ( | ncx_module_t * | mod, |
val_value_t * | valroot, | ||
boolean | set_candidate, | ||
boolean | set_augment, | ||
boolean | force | ||
) |
Check for any top-level config leafs that have a default value, and add them to the running configuration.
Used by the server to add defaults for data when a module is loaded.
mod | module that was just added and should be used to check for top-level database leafs with a default |
valroot | running config root to add the defaults to NULL if the running config shuld be retrieved |
set_candidate | TRUE if the candidate config should also be updated |
set_augment | TRUE if the top-level augments in this module (that augments a different module) should also be updated |
force | TRUE to force mod-defaults even if flagged as already loaded; used by load-backup FALSE to check the already-checked flag |
status_t agt_set_val_defaults | ( | val_value_t * | val | ) |
Check for any node-level config leafs that have a default value, and add them to the running configuration.
val | the value struct to modify |
status_t agt_set_with_defaults | ( | rpc_msg_t * | msg, |
const xmlChar * | modname, | ||
val_value_t ** | errval | ||
) |
Check if the <with-defaults> parameter is set in the request message, and if so, it is one of the server's supported values.
If not, then record an error If so, then set the msg->mhdr.withdef enum
[in,out] | msg | rpc message in progress msg->mhdr.withdef set |
modname | module name that <with-defaults> belongs to If defined via augments from ietf-with-defaults as for <get-config>, <get>, ... etc should be set to NULL. if defined in the original module in the RPC <input> the modname must not be NULL, should specify original module name to use. | |
[out] | errval | pointer to error return value *errval set to the with-defaults parm if some error |
void agt_set_with_owners | ( | rpc_msg_t * | msg | ) |
Check if the <with-owners> parameter is set in the request message.
If so, then set the msg->mhdr.flags XML_MSG_FL_OWNERS bit
[in,out] | msg | rpc message in progress |
val_nodetest_fn_t agt_util_get_testfn | ( | xml_msg_hdr_t * | msg, |
boolean | getop | ||
) |
Get the test function that should be used for a specific get operation based on with-default parameter and get operation.
msg | xml_msg_hdr in progress |
getop | TRUE for <get>; FALSE for <get-config> |
Validate the <filter> parameter if present.
Used by server when NETCONF <get-config> or <get> processed.
scb | session control block | |
[in,out] | msg | rpc_msg_t in progress msg->rpc_filter is filled in if NO_ERR; type could be NONE |
status_t agt_validate_filter_ex | ( | ses_cb_t * | scb, |
rpc_msg_t * | msg, | ||
val_value_t * | filter | ||
) |
Validate the <filter> parameter if present (extended)
Used by server when NETCONF <get-config> or <get> processed.
scb | session control block | |
msg | rpc_msg_t in progress | |
[in,out] | filter | filter element to use msg->rpc_filter is filled in if NO_ERR; type could be NONE |
status_t agt_validate_filter_nmda | ( | rpc_msg_t * | msg, |
val_value_t * | filter, | ||
boolean | is_subtree, | ||
boolean | is_operational | ||
) |
Validate the <filter> parameter; FOR NMDA ONLY.
If the filter is valid msg->rpc_filter is filled in;
msg | rpc_msg_t in progress |
filter | the filter element to use |
is_subtree | is TRUE if this a subtree filter; FALSE for XPath |
is_operational | is TRUE if the target datastore is operational |
status_t agt_xpath_force_true | ( | struct xpath_pcb_t_ * | pcb, |
val_value_t * | context, | ||
val_value_t * | docroot, | ||
boolean * | result | ||
) |
XPath Boolean EVAL Replacement Callback.
Callback to implement the XPath semantics for a must or when statement for a datastore object.
Use XPATH_EXPRSTR(pcb) to examine the XPath expression The callback must return ERR_NCX_SKIPPED if the expression evaluation is skipped.
Only supported for used during datastore processing to access configuration nodes (val_value_t tree) Support for GET2 callbacks not supported at this time
Used in the server to optimize datastore validation and delete_dead_nodes when-stmt processing.
pcb | XPath parser control block in use | |
context | context value node to use. The object of this node contains a pointer to this callback function | |
docroot | document root value node to use. | |
[out] | result | address of return result if NO_ERR
|
NO_ERR | if test is done and *result is valid |
ERR_NCX_SKIPPED | if test is not done and *result is not valid. Actual XPath eval will be done instead. |
other | error to force the XPath test to fail with an error and datastore operation will fail |