![]()  | 
  
    yumapro
    25.10-1
    
   YumaPro SDK 
   | 
 
Configuration segments are stored in sequential order. More...

Data Structures | |
| struct | cfg_template_t | 
| struct representing 1 configuration database  More... | |
Typedefs | |
| typedef void(* | cfg_reload_candidate_cb_t) (void) | 
| support for server callback anytime the candidate config is reloaded from the running config <discard-changes>  | |
Enumerations | |
| enum | cfg_state_t {  CFG_ST_NONE , CFG_ST_INIT , CFG_ST_READY , CFG_ST_PLOCK , CFG_ST_FLOCK , CFG_ST_CLEANUP }  | 
| current configuration state  More... | |
| enum | cfg_source_t | 
| classify the config source  | |
| enum | cfg_location_t | 
| classify the config location  | |
Functions | |
| void | cfg_ypinit (void) | 
| Initialize the config manager.  More... | |
| void | cfg_clean_roots (void) | 
| Cleanup the cfg->root nodes before all the objects are freed.  More... | |
| void | cfg_cleanup (void) | 
| Cleanup the config manager.  More... | |
| status_t | cfg_rwlock_rdlock (thd_tcb_t *tcb, cfg_template_t *cfg) | 
| Take out the read lock associated with a cfg (datastore) RWLOCK structure May be called recursively.  More... | |
| status_t | cfg_rwlock_wrlock (thd_tcb_t *tcb, cfg_template_t *cfg) | 
| Take out a write lock associated with a cfg (datastore) RWLOCK structure.  More... | |
| status_t | cfg_rwlock_unlock (thd_tcb_t *tcb, cfg_template_t *cfg) | 
| Release a lock associated with a cfg (datastore) RWLOCK structure.  More... | |
| status_t | cfg_rwlock_init_req_locks (thd_tcb_t *tcb) | 
| Initialize TCB multiple lock structure.  More... | |
| status_t | cfg_rwlock_release_all_locks (thd_tcb_t *tcb) | 
| Release all RWLOCKs recorded in TCB lock state structure.  More... | |
| status_t | cfg_rwlock_acquire_locks (thd_tcb_t *tcb) | 
| Acquire multiple locks in order to help prevent deadlock.  More... | |
| status_t | cfg_rwlock_acquire_lock_pair (thd_tcb_t *tcb, cfg_template_t *cfg1, boolean wrlock1, cfg_template_t *cfg2, boolean wrlock2) | 
| Acquire multiple (2) locks in predetermined, repeatable in order to help prevent deadlock.  More... | |
| status_t | cfg_rwlock_acquire_single_lock (thd_tcb_t *tcb, cfg_template_t *cfg, boolean wrlock) | 
| Acquire a single RWLOCK.  More... | |
| status_t | cfg_rwlock_acquire_single_rdlock (thd_tcb_t *tcb, cfg_template_t *cfg) | 
| Acquire a single RWLOCK for read access.  More... | |
| status_t | cfg_rwlock_acquire_single_wrlock (thd_tcb_t *tcb, cfg_template_t *cfg) | 
| Acquire a single RWLOCK for write access.  More... | |
| status_t | cfg_init_static_db (ncx_cfg_t cfg_id) | 
| Initialize the specified static configuration slot.  More... | |
| cfg_template_t * | cfg_new_template (const xmlChar *name, ncx_cfg_t cfg_id) | 
| Malloc and initialize a cfg_template_t struct.  More... | |
| void | cfg_free_template (cfg_template_t *cfg) | 
| Clean and free the cfg_template_t struct.  More... | |
| void | cfg_set_state (ncx_cfg_t cfg_id, cfg_state_t new_state) | 
| Change the state of the specified static config.  More... | |
| cfg_state_t | cfg_get_state (ncx_cfg_t cfg_id) | 
| Get the state of the specified static config.  More... | |
| cfg_template_t * | cfg_get_config (const xmlChar *cfgname) | 
| Get the config struct from its name.  More... | |
| const xmlChar * | cfg_get_config_name (ncx_cfg_t cfgid) | 
| Get the config name from its ID.  More... | |
| cfg_template_t * | cfg_get_config_id (ncx_cfg_t cfgid) | 
| Get the config struct from its ID.  More... | |
| void | cfg_set_target (ncx_cfg_t cfg_id) | 
| Set the CFG_FL_TARGET flag in the specified config.  More... | |
| status_t | cfg_fill_candidate_from_running (ses_id_t sesid) | 
| Fill the <candidate> config with the config contents of the <running> config.  More... | |
| status_t | cfg_fill_candidate_from_startup (ses_id_t sesid) | 
| Fill the <candidate> config with the config contents of the <startup> config.  More... | |
| status_t | cfg_fill_candidate_from_inline (ses_id_t sesid, val_value_t *newroot) | 
| Fill the <candidate> config with the config contents of the <config> inline XML node.  More... | |
| status_t | cfg_fill_operational_from_running (ses_id_t sesid) | 
| Fill the <operational> config with the config contents of the <running> config.  More... | |
| void | cfg_set_dirty_flag (cfg_template_t *cfg) | 
| Mark the config as 'changed'.  More... | |
| void | cfg_clear_dirty_flag (cfg_template_t *cfg) | 
| Clear the cfg dirty flag upon request.  More... | |
| void | cfg_clear_running_dirty_flag (void) | 
| Clear the running dirty flag when it is saved to NV-storage or loaded into running from startup.  More... | |
| void | cfg_clear_candidate_dirty_flag (void) | 
| Clear the candidate dirty flag when it is saved to NV-storage or loaded into running from startup.  More... | |
| boolean | cfg_get_dirty_flag (const cfg_template_t *cfg) | 
| Get the config dirty flag value.  More... | |
| status_t | cfg_ok_to_lock (const cfg_template_t *cfg) | 
| Check if the specified config can be locked right now for global lock only.  More... | |
| status_t | cfg_ok_to_unlock (const cfg_template_t *cfg, ses_id_t sesid) | 
| Check if the specified config can be unlocked right now by the specified session ID; for global lock only.  More... | |
| status_t | cfg_ok_to_unlock2 (const cfg_template_t *cfg, ses_id_t sesid, boolean lockall) | 
| Check if the specified config can be unlocked right now by the specified session ID; for global lock only.  More... | |
| status_t | cfg_ok_to_read (const cfg_template_t *cfg) | 
| Check if the specified config can be read right now.  More... | |
| status_t | cfg_ok_to_write (const cfg_template_t *cfg, ses_id_t sesid) | 
| Check if the specified config can be written right now by the specified session ID.  More... | |
| boolean | cfg_is_global_locked (const cfg_template_t *cfg) | 
| Check if the specified config has ab active global lock.  More... | |
| boolean | cfg_is_partial_locked (const cfg_template_t *cfg) | 
| Check if the specified config has any active partial locks.  More... | |
| status_t | cfg_get_global_lock_info (const cfg_template_t *cfg, ses_id_t *sesid, const xmlChar **locktime) | 
| Get the current global lock info.  More... | |
| status_t | cfg_lock (cfg_template_t *cfg, ses_id_t locked_by, cfg_source_t lock_src) | 
| Lock the specified config.  More... | |
| status_t | cfg_lock2 (cfg_template_t *cfg, ses_id_t locked_by, cfg_source_t lock_src, boolean lockall) | 
| Lock the specified config (with lockall)  More... | |
| status_t | cfg_unlock (cfg_template_t *cfg, ses_id_t locked_by) | 
| Unlock the specified config.  More... | |
| status_t | cfg_unlock2 (cfg_template_t *cfg, ses_id_t locked_by, boolean lockall) | 
| Unlock the specified config (2nd rev)  More... | |
| status_t | cfg_unlock_ex (cfg_template_t *cfg, ses_id_t locked_by, boolean skip_reload) | 
| Unlock the specified config.  More... | |
| void | cfg_release_locks (ses_id_t sesid) | 
| Release any configuration locks held by the specified session.  More... | |
| void | cfg_release_partial_locks (ses_id_t sesid) | 
| Release any configuration locks held by the specified session.  More... | |
| void | cfg_get_lock_list (ses_id_t sesid, val_value_t *retval) | 
| Get a list of all the locks held by a session.  More... | |
| void | cfg_apply_load_root (cfg_template_t *cfg, val_value_t *newroot) | 
| Apply the AGT_CB_APPLY function for the OP_EDITOP_LOAD operation.  More... | |
| void | cfg_update_last_ch_time (cfg_template_t *cfg, time_t *timestamp) | 
| Update the last-modified timestamp.  More... | |
| void | cfg_update_last_txid (cfg_template_t *cfg, ncx_transaction_id_t txid) | 
| Update the last good transaction ID.  More... | |
| void | cfg_update_stamps (cfg_template_t *source, cfg_template_t *dest) | 
| Update the last-modified and last-txid stamps.  More... | |
| const xmlChar * | cfg_get_last_ch_time (cfg_template_t *cfg) | 
| Get the last-modified timestamp.  More... | |
| ncx_transaction_id_t | cfg_get_last_txid (cfg_template_t *cfg) | 
| Get the last good transaction ID.  More... | |
| status_t | cfg_sprintf_etag (cfg_template_t *cfg, xmlChar *buff, int32 buffsize) | 
| Write the Entity Tag for the datastore to the specified buffer.  More... | |
| status_t | cfg_sprintf_etag_id (ncx_transaction_id_t id, xmlChar *buff, int32 buffsize) | 
| Write the Entity Tag for the datastore to the specified buffer Use the last_id instead of the cfg template.  More... | |
| status_t | cfg_add_partial_lock (cfg_template_t *cfg, plock_cb_t *plcb) | 
| Add a partial lock the specified config.  More... | |
| plock_cb_t * | cfg_find_partial_lock (cfg_template_t *cfg, plock_id_t lockid) | 
| Find a partial lock in the specified config.  More... | |
| plock_cb_t * | cfg_first_partial_lock (cfg_template_t *cfg) | 
| Get the first partial lock in the specified config.  More... | |
| plock_cb_t * | cfg_next_partial_lock (plock_cb_t *curplockcb) | 
| Get the next partial lock in the specified config.  More... | |
| void | cfg_delete_partial_lock (cfg_template_t *cfg, plock_id_t lockid) | 
| Remove a partial lock from the specified config.  More... | |
| status_t | cfg_ok_to_partial_lock (const cfg_template_t *cfg) | 
| Check if the specified config can be locked right now for partial lock only.  More... | |
| val_value_t * | cfg_get_root (ncx_cfg_t cfgid) | 
| Get the config root for the specified config.  More... | |
| status_t | cfg_setup_datastore_root (ncx_cfg_t cfgid) | 
| Setup the running config root if load_running_config did not add anything.  More... | |
| void | cfg_register_reload_candidate_cb (cfg_reload_candidate_cb_t cbfn) | 
| Register a callback function to be called anytime the.  More... | |
| const xmlChar * | cfg_get_startup_filespec (void) | 
| Get the filespec string for the XML file to save the running database.  More... | |
| boolean | cfg_running_is_wrlocked (void) | 
| Check if the running datastore is currently pthreads write-locked.  More... | |
| boolean | cfg_candidate_is_wrlocked (void) | 
| Check if the candidate datastore is currently pthreads write-locked.  More... | |
| boolean | cfg_operational_is_wrlocked (void) | 
| Check if the operational datastore is currently pthreads write-locked.  More... | |
| cfg_template_t * | cfg_new_fake_candidate (const xmlChar *name, ncx_cfg_t cfg_id) | 
| Malloc and initialize a new fake Candidate cfg_template_t struct.  More... | |
| void | cfg_set_defer_load (boolean val) | 
| Set the config defer load flag to the config.  More... | |
| time_t | cfg_get_lock_itime (ncx_cfg_t cfg_id) | 
| Get the lock_itime field.  More... | |
| status_t | cfg_lock_hold_timeout (ncx_cfg_t cfg_id, ses_id_t locked_by, boolean skip_reload) | 
| Force a cfg lock to be undone due to max-lock-hold-time.  More... | |
Configuration segments are stored in sequential order.
    Configuration database (running, candidate, startup, etc.)
      +
      |
      +-- (root: /)
           +
           |
           +--- object X  (netconf, security, routing, etc.)
           |         |
           |         +---- object A , B, C
           |
           +--- object Y
           |         |
           |         +---- object D , E
           V
   MODULE USAGE
   ============
   1) call cfg_ypinit()
   2) call cfg_init_static_db for the various hard-wired databases
      that need to be created by the agent
   3) call cfg_apply_load_root() with the startup database contents
      to load into the running config
   4) call cfg_set_target() [NCX_CFGID_CANDIDATE or NCX_CFGID_RUNNING]
   4a) call cfg_fill_candidate_from_running if the target is candidate;
       after agt.c/load_running_config is called
   5) call cfg_set_state() to setup config db access, when ready
      for NETCONF operations
   6) Use cfg_ok_to_* functions to test config access
   7) use cfg_lock and cfg_unlock as desired to set global write locks
   8) use cfg_release_locks when a session terminates
   9) call cfg_cleanup() when program is terminating
 | enum cfg_state_t | 
| status_t cfg_add_partial_lock | ( | cfg_template_t * | cfg, | 
| plock_cb_t * | plcb | ||
| ) | 
Add a partial lock the specified config.
This will not really have an effect unless the CFG_FL_TARGET flag in the specified config is also set For global lock only
| cfg | Config template to lock | 
| plcb | partial lock control block, already filled out, to add to this configuration | 

| void cfg_apply_load_root | ( | cfg_template_t * | cfg, | 
| val_value_t * | newroot | ||
| ) | 
Apply the AGT_CB_APPLY function for the OP_EDITOP_LOAD operation.
| cfg | config target | 
| newroot | new config tree | 


| boolean cfg_candidate_is_wrlocked | ( | void | ) | 
Check if the candidate datastore is currently pthreads write-locked.

| void cfg_clean_roots | ( | void | ) | 
Cleanup the cfg->root nodes before all the objects are freed.

| void cfg_cleanup | ( | void | ) | 
Cleanup the config manager.

| void cfg_clear_candidate_dirty_flag | ( | void | ) | 
Clear the candidate dirty flag when it is saved to NV-storage or loaded into running from startup.


| void cfg_clear_dirty_flag | ( | cfg_template_t * | cfg | ) | 
Clear the cfg dirty flag upon request.
| cfg | pointer to valid config template | 

| void cfg_clear_running_dirty_flag | ( | void | ) | 
Clear the running dirty flag when it is saved to NV-storage or loaded into running from startup.


| void cfg_delete_partial_lock | ( | cfg_template_t * | cfg, | 
| plock_id_t | lockid | ||
| ) | 
Remove a partial lock from the specified config.
| cfg | Config template to use | 
| lockid | lock-id for the plcb to remove | 

| status_t cfg_fill_candidate_from_inline | ( | ses_id_t | sesid, | 
| val_value_t * | newroot | ||
| ) | 
Fill the <candidate> config with the config contents of the <config> inline XML node.
Called internally only, do not use!
| sesid | current session ID | 
| newroot | new root for the candidate config | 

Fill the <candidate> config with the config contents of the <running> config.
| sesid | session ID setting the config | 


Fill the <candidate> config with the config contents of the <startup> config.
Called internally only, do not use!
| sesid | session ID setting the config | 

Fill the <operational> config with the config contents of the <running> config.
Called internally only, do not use!
| sesid | current session ID | 

| plock_cb_t * cfg_find_partial_lock | ( | cfg_template_t * | cfg, | 
| plock_id_t | lockid | ||
| ) | 
Find a partial lock in the specified config.
| cfg | Config template to use | 
| lockid | lock-id for the plcb to find | 

| plock_cb_t * cfg_first_partial_lock | ( | cfg_template_t * | cfg | ) | 
Get the first partial lock in the specified config.
| cfg | Config template to use | 

| void cfg_free_template | ( | cfg_template_t * | cfg | ) | 
Clean and free the cfg_template_t struct.
| cfg | cfg_template_t to clean and free | 

| cfg_template_t * cfg_get_config | ( | const xmlChar * | cfgname | ) | 
Get the config struct from its name.
| cfgname | Config Name | 
| cfg_template_t * cfg_get_config_id | ( | ncx_cfg_t | cfgid | ) | 
Get the config struct from its ID.
| cfgid | config ID | 

| const xmlChar * cfg_get_config_name | ( | ncx_cfg_t | cfgid | ) | 
Get the config name from its ID.
| cfgid | config ID | 


| boolean cfg_get_dirty_flag | ( | const cfg_template_t * | cfg | ) | 
Get the config dirty flag value.
| cfg | configuration template to check | 

| status_t cfg_get_global_lock_info | ( | const cfg_template_t * | cfg, | 
| ses_id_t * | sesid, | ||
| const xmlChar ** | locktime | ||
| ) | 
Get the current global lock info.
| cfg | Config template to check | |
| [out] | sesid | address of return session ID pointer
  | 
| [out] | locktime | address of return lock time
  | 
| const xmlChar * cfg_get_last_ch_time | ( | cfg_template_t * | cfg | ) | 
Get the last-modified timestamp.
| cfg | config target | 
| ncx_transaction_id_t cfg_get_last_txid | ( | cfg_template_t * | cfg | ) | 
Get the last good transaction ID.
| cfg | config target | 
| time_t cfg_get_lock_itime | ( | ncx_cfg_t | cfg_id | ) | 
Get the lock_itime field.
| cfg_id | cfg ID | 
| void cfg_get_lock_list | ( | ses_id_t | sesid, | 
| val_value_t * | retval | ||
| ) | 
Get a list of all the locks held by a session.
| sesid | session ID to check for any locks | |
| [out] | retval | pointer to malloced and initialized NCX_BT_SLIST
  | 

| val_value_t * cfg_get_root | ( | ncx_cfg_t | cfgid | ) | 
Get the config root for the specified config.
| cfgid | config ID to get root from | 

| const xmlChar * cfg_get_startup_filespec | ( | void | ) | 
Get the filespec string for the XML file to save the running database.
| cfg_state_t cfg_get_state | ( | ncx_cfg_t | cfg_id | ) | 
Get the state of the specified static config.
| cfg_id | Config ID | 
Initialize the specified static configuration slot.
| cfg_id | cfg ID to intialize | 


| boolean cfg_is_global_locked | ( | const cfg_template_t * | cfg | ) | 
Check if the specified config has ab active global lock.
| cfg | Config template to check | 
| boolean cfg_is_partial_locked | ( | const cfg_template_t * | cfg | ) | 
Check if the specified config has any active partial locks.
| cfg | Config template to check | 
| status_t cfg_lock | ( | cfg_template_t * | cfg, | 
| ses_id_t | locked_by, | ||
| cfg_source_t | lock_src | ||
| ) | 
Lock the specified config.
This will not really have an effect unless the CFG_FL_TARGET flag in the specified config is also set
| cfg | Config template to lock | 
| locked_by | session ID of the lock owner | 
| lock_src | enum classifying the lock source | 

| status_t cfg_lock2 | ( | cfg_template_t * | cfg, | 
| ses_id_t | locked_by, | ||
| cfg_source_t | lock_src, | ||
| boolean | lockall | ||
| ) | 
Lock the specified config (with lockall)
This will not really have an effect unless the CFG_FL_TARGET flag in the specified config is also set
| cfg | Config template to lock | 
| locked_by | session ID of the lock owner | 
| lock_src | enum classifying the lock source | 
| lockall | TRUE if from "<lock-all>"; FALSE otherwise | 


Force a cfg lock to be undone due to max-lock-hold-time.
| cfg_id | Config ID to force global lock released | 
| locked_by | session ID of the lock owner | 
| skip_reload | TRUE to skip reload/discard-changes on candidate | 
| cfg_template_t * cfg_new_fake_candidate | ( | const xmlChar * | name, | 
| ncx_cfg_t | cfg_id | ||
| ) | 
Malloc and initialize a new fake Candidate cfg_template_t struct.
| name | cfg name | 
| cfg_id | cfg ID | 


| cfg_template_t * cfg_new_template | ( | const xmlChar * | name, | 
| ncx_cfg_t | cfg_id | ||
| ) | 
Malloc and initialize a cfg_template_t struct.
| name | cfg name | 
| cfg_id | cfg ID | 

| plock_cb_t * cfg_next_partial_lock | ( | plock_cb_t * | curplockcb | ) | 
Get the next partial lock in the specified config.
| curplockcb | current lock control block; get next CB | 
| status_t cfg_ok_to_lock | ( | const cfg_template_t * | cfg | ) | 
Check if the specified config can be locked right now for global lock only.
| cfg | Config template to check | 


| status_t cfg_ok_to_partial_lock | ( | const cfg_template_t * | cfg | ) | 
Check if the specified config can be locked right now for partial lock only.
| cfg | Config template to check | 


| status_t cfg_ok_to_read | ( | const cfg_template_t * | cfg | ) | 
Check if the specified config can be read right now.
| cfg | Config template to check | 


| status_t cfg_ok_to_unlock | ( | const cfg_template_t * | cfg, | 
| ses_id_t | sesid | ||
| ) | 
Check if the specified config can be unlocked right now by the specified session ID; for global lock only.
| cfg | Config template to check | 
| sesid | session ID requesting to unlock the config | 

| status_t cfg_ok_to_unlock2 | ( | const cfg_template_t * | cfg, | 
| ses_id_t | sesid, | ||
| boolean | lockall | ||
| ) | 
Check if the specified config can be unlocked right now by the specified session ID; for global lock only.
Support for lock-all added
| cfg | Config template to check | 
| sesid | session ID requesting to unlock the config | 
| lockall | TRUE if from "<unlock-all>"; FALSE otherwise | 


| status_t cfg_ok_to_write | ( | const cfg_template_t * | cfg, | 
| ses_id_t | sesid | ||
| ) | 
Check if the specified config can be written right now by the specified session ID.
This is not an access control check, only locks and config state will be checked
| cfg | Config template to check | 
| sesid | session ID requesting to write to the config | 


| boolean cfg_operational_is_wrlocked | ( | void | ) | 
Check if the operational datastore is currently pthreads write-locked.

| void cfg_register_reload_candidate_cb | ( | cfg_reload_candidate_cb_t | cbfn | ) | 
Register a callback function to be called anytime the.
cfg_fill_candidate_from_ FOO function is called This is an internal server callback – not a SIL callback
| cbfn | callback function to register | 
| void cfg_release_locks | ( | ses_id_t | sesid | ) | 
Release any configuration locks held by the specified session.
| sesid | session ID to check for | 


| void cfg_release_partial_locks | ( | ses_id_t | sesid | ) | 
Release any configuration locks held by the specified session.
| sesid | session ID to check for | 


| boolean cfg_running_is_wrlocked | ( | void | ) | 
Check if the running datastore is currently pthreads write-locked.

| status_t cfg_rwlock_acquire_lock_pair | ( | thd_tcb_t * | tcb, | 
| cfg_template_t * | cfg1, | ||
| boolean | wrlock1, | ||
| cfg_template_t * | cfg2, | ||
| boolean | wrlock2 | ||
| ) | 
Acquire multiple (2) locks in predetermined, repeatable in order to help prevent deadlock.
| tcb | thread control block for session (caller) | 
| cfg1 | config ptr 1 | 
| wrlock1 | TRUE => write lock ELSE read lock | 
| cfg2 | config ptr 2 | 
| wrlock2 | TRUE => write lock ELSE read lock | 


Acquire multiple locks in order to help prevent deadlock.
| tcb | thread control block for session (caller) | 


| status_t cfg_rwlock_acquire_single_lock | ( | thd_tcb_t * | tcb, | 
| cfg_template_t * | cfg, | ||
| boolean | wrlock | ||
| ) | 
Acquire a single RWLOCK.
NOTE: Call once only. Do NOT use this to acquire multiple locks.
| tcb | thread control block for session (caller) | 
| cfg | data store | 
| wrlock | TRUE == write access requested | 


| status_t cfg_rwlock_acquire_single_rdlock | ( | thd_tcb_t * | tcb, | 
| cfg_template_t * | cfg | ||
| ) | 
Acquire a single RWLOCK for read access.
NOTE: Call once only per RPC. Do NOT use this to acquire multiple locks.
| tcb | thread control block for session (caller) | 
| cfg | data store | 


| status_t cfg_rwlock_acquire_single_wrlock | ( | thd_tcb_t * | tcb, | 
| cfg_template_t * | cfg | ||
| ) | 
Acquire a single RWLOCK for write access.
NOTE: Call once only per RPC. Do NOT use this to acquire multiple locks.
| tcb | thread control block for session (caller) | 
| cfg | data store | 


Initialize TCB multiple lock structure.
WARNING: Will attempt to unlock (and generate error message) but should NOT be called for this purpose.
| tcb | thread control block for session (caller) | 

| status_t cfg_rwlock_rdlock | ( | thd_tcb_t * | tcb, | 
| cfg_template_t * | cfg | ||
| ) | 
Take out the read lock associated with a cfg (datastore) RWLOCK structure May be called recursively.
| tcb | thread control block for session (caller) | 
| cfg | datastore descriptor (e.g., running, candidate, or startup) | 


Release all RWLOCKs recorded in TCB lock state structure.
| tcb | thread control block for session (caller) | 


| status_t cfg_rwlock_unlock | ( | thd_tcb_t * | tcb, | 
| cfg_template_t * | cfg | ||
| ) | 
Release a lock associated with a cfg (datastore) RWLOCK structure.
May be called recursively.
| tcb | thread control block for session (caller) | 
| cfg | datastore descriptor (e.g., running, candidate, or startup) | 

| status_t cfg_rwlock_wrlock | ( | thd_tcb_t * | tcb, | 
| cfg_template_t * | cfg | ||
| ) | 
Take out a write lock associated with a cfg (datastore) RWLOCK structure.
May be called recursively.
| tcb | thread control block for session (caller) | 
| cfg | datastore descriptor (e.g., running, candidate, or startup) | 

| void cfg_set_defer_load | ( | boolean | val | ) | 
Set the config defer load flag to the config.
| val | TRUE if this config is in defer load mode; FALSE if not | 

| void cfg_set_dirty_flag | ( | cfg_template_t * | cfg | ) | 
Mark the config as 'changed'.
| cfg | configuration template to set | 
| void cfg_set_state | ( | ncx_cfg_t | cfg_id, | 
| cfg_state_t | new_state | ||
| ) | 
Change the state of the specified static config.
| cfg_id | Config ID to change | 
| new_state | new config state to set | 
| void cfg_set_target | ( | ncx_cfg_t | cfg_id | ) | 
Set the CFG_FL_TARGET flag in the specified config.
| cfg_id | Config ID to set as a valid target | 
Setup the running config root if load_running_config did not add anything.


| status_t cfg_sprintf_etag | ( | cfg_template_t * | cfg, | 
| xmlChar * | buff, | ||
| int32 | buffsize | ||
| ) | 
Write the Entity Tag for the datastore to the specified buffer.
| cfg | cfg_templatet data structure to use | |
| [out] | buff | buffer to use
  | 
| buffsize | buffer size to use | 


| status_t cfg_sprintf_etag_id | ( | ncx_transaction_id_t | id, | 
| xmlChar * | buff, | ||
| int32 | buffsize | ||
| ) | 
Write the Entity Tag for the datastore to the specified buffer Use the last_id instead of the cfg template.
| id | cfg id to use | |
| [out] | buff | buffer to use
  | 
| buffsize | buffer size to use | 


| status_t cfg_unlock | ( | cfg_template_t * | cfg, | 
| ses_id_t | locked_by | ||
| ) | 
Unlock the specified config.
| cfg | Config template to unlock | 
| locked_by | session ID of the lock owner | 
| status_t cfg_unlock2 | ( | cfg_template_t * | cfg, | 
| ses_id_t | locked_by, | ||
| boolean | lockall | ||
| ) | 
Unlock the specified config (2nd rev)
| cfg | Config template to unlock | 
| locked_by | session ID of the lock owner | 
| lockall | TRUE if called from <unlock-all>; FALSE otherwise | 
| status_t cfg_unlock_ex | ( | cfg_template_t * | cfg, | 
| ses_id_t | locked_by, | ||
| boolean | skip_reload | ||
| ) | 
Unlock the specified config.
Do not always force a remove changes. This is needed for the <unload> operation which locks the datastores while deleting data nodes and schema nodes for the module being unloaded
| cfg | Config template to unlock | 
| locked_by | session ID of the lock owner | 
| skip_reload | TRUE to skip cfg reload test | 
| void cfg_update_last_ch_time | ( | cfg_template_t * | cfg, | 
| time_t * | timestamp | ||
| ) | 
Update the last-modified timestamp.
| cfg | config target | 
| timestamp | timestamp to use or NULL to get cvurrent time | 


| void cfg_update_last_txid | ( | cfg_template_t * | cfg, | 
| ncx_transaction_id_t | txid | ||
| ) | 
Update the last good transaction ID.
| cfg | config target | 
| txid | trnasaction ID to use | 

| void cfg_update_stamps | ( | cfg_template_t * | source, | 
| cfg_template_t * | dest | ||
| ) | 
Update the last-modified and last-txid stamps.
| source | source config | 
| dest | destoination config | 


| void cfg_ypinit | ( | void | ) | 
Initialize the config manager.
YPW-1360: netconfd: naming issue in ncx module (cfg.c cfg_init() API) changed function name cfg_init to cfg_ypinit.
