Merge branch 'modules-state'
This commit is contained in:
commit
2394c6f46e
43 changed files with 1755 additions and 587 deletions
|
|
@ -46,6 +46,11 @@
|
|||
*/
|
||||
#define ERR_STRLEN 256
|
||||
|
||||
/* Special error number for clicon_suberrno
|
||||
* For catching xml parse errors as exceptions
|
||||
*/
|
||||
#define XMLPARSE_ERRNO 898943
|
||||
|
||||
/*
|
||||
* Types
|
||||
* Add error here, but must also add an entry in EV variable.
|
||||
|
|
|
|||
|
|
@ -198,6 +198,10 @@ int clicon_xmldb_handle_set(clicon_handle h, void *xh);
|
|||
char *clicon_username_get(clicon_handle h);
|
||||
int clicon_username_set(clicon_handle h, void *username);
|
||||
|
||||
/* Set and get startup status */
|
||||
enum startup_status clicon_startup_status_get(clicon_handle h);
|
||||
int clicon_startup_status_set(clicon_handle h, enum startup_status status);
|
||||
|
||||
/* Set and get socket fd (ie backend server socket / restconf fcgx socket */
|
||||
int clicon_socket_get(clicon_handle h);
|
||||
int clicon_socket_set(clicon_handle h, int s);
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ typedef void *transaction_data;
|
|||
/* Transaction callbacks */
|
||||
typedef int (trans_cb_t)(clicon_handle h, transaction_data td);
|
||||
|
||||
/* Hook to override default prompt with explicit function
|
||||
/*! Hook to override default prompt with explicit function
|
||||
* Format prompt before each getline
|
||||
* @param[in] h Clicon handle
|
||||
* @param[in] mode Cligen syntax mode
|
||||
|
|
@ -115,6 +115,27 @@ typedef int (trans_cb_t)(clicon_handle h, transaction_data td);
|
|||
*/
|
||||
typedef char *(cli_prompthook_t)(clicon_handle, char *mode);
|
||||
|
||||
/*! Startup status for use in startup-callback
|
||||
* Note that for STARTUP_ERR and _INVALID, running runs in failsafe mode
|
||||
* and startup contains the erroneous or invalid database.
|
||||
* The user should repair the startup and
|
||||
* (1) restart he backend
|
||||
* (2) copy startup to candidate and commit.
|
||||
*/
|
||||
enum startup_status{
|
||||
STARTUP_ERR, /* XML/JSON syntax error */
|
||||
STARTUP_INVALID, /* XML/JSON OK, but (yang) validation fails */
|
||||
STARTUP_OK /* Everything OK (may still be modules-mismatch) */
|
||||
};
|
||||
|
||||
/*! Upgrade configuration callback given a diff of yang module state
|
||||
* @param[in] h Clicon handle
|
||||
* @param[in] xms XML tree of module state differences
|
||||
* @retval 0 OK
|
||||
* @retval -1 Error
|
||||
*/
|
||||
typedef int (upgrade_cb_t)(clicon_handle, cxobj *xms);
|
||||
|
||||
/* plugin init struct for the api
|
||||
* Note: Implicit init function
|
||||
*/
|
||||
|
|
@ -139,14 +160,16 @@ struct clixon_plugin_api{
|
|||
struct {
|
||||
} cau_netconf;
|
||||
struct {
|
||||
plgreset_t *cb_reset; /* Reset system status (backend only) */
|
||||
plgreset_t *cb_reset; /* Reset system status */
|
||||
plgstatedata_t *cb_statedata; /* Get state data from plugin (backend only) */
|
||||
upgrade_cb_t *cb_upgrade; /* Upgrade callback */
|
||||
trans_cb_t *cb_trans_begin; /* Transaction start */
|
||||
trans_cb_t *cb_trans_validate; /* Transaction validation */
|
||||
trans_cb_t *cb_trans_complete; /* Transaction validation complete */
|
||||
trans_cb_t *cb_trans_commit; /* Transaction commit */
|
||||
trans_cb_t *cb_trans_end; /* Transaction completed */
|
||||
trans_cb_t *cb_trans_abort; /* Transaction aborted */
|
||||
trans_cb_t *cb_trans_abort; /* Transaction aborted */
|
||||
|
||||
} cau_backend;
|
||||
|
||||
} u;
|
||||
|
|
@ -158,6 +181,7 @@ struct clixon_plugin_api{
|
|||
#define ca_auth u.cau_restconf.cr_auth
|
||||
#define ca_reset u.cau_backend.cb_reset
|
||||
#define ca_statedata u.cau_backend.cb_statedata
|
||||
#define ca_upgrade u.cau_backend.cb_upgrade
|
||||
#define ca_trans_begin u.cau_backend.cb_trans_begin
|
||||
#define ca_trans_validate u.cau_backend.cb_trans_validate
|
||||
#define ca_trans_complete u.cau_backend.cb_trans_complete
|
||||
|
|
|
|||
|
|
@ -180,9 +180,9 @@ int xml_body_uint32(cxobj *xb, uint32_t *val);
|
|||
int xml_operation(char *opstr, enum operation_type *op);
|
||||
char *xml_operation2str(enum operation_type op);
|
||||
#if defined(__GNUC__) && __GNUC__ >= 3
|
||||
int clicon_log_xml(int level, cxobj *x, char *format, ...) __attribute__ ((format (printf, 3, 4)));
|
||||
int clicon_log_xml(int level, cxobj *x, char *format, ...) __attribute__ ((format (printf, 3, 4)));
|
||||
#else
|
||||
int clicon_log_xml(int level, cxobj *x, char *format, ...);
|
||||
int clicon_log_xml(int level, cxobj *x, char *format, ...);
|
||||
#endif
|
||||
|
||||
#endif /* _CLIXON_XML_H */
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ typedef int (xmldb_getopt_t)(xmldb_handle xh, char *optname, void **value);
|
|||
typedef int (xmldb_setopt_t)(xmldb_handle xh, char *optname, void *value);
|
||||
|
||||
/* Type of xmldb get function */
|
||||
typedef int (xmldb_get_t)(xmldb_handle xh, const char *db, char *xpath, int config, cxobj **xtop);
|
||||
typedef int (xmldb_get_t)(xmldb_handle xh, const char *db, char *xpath, int config, cxobj **xtop, cxobj **xmodst);
|
||||
|
||||
/* Type of xmldb put function */
|
||||
typedef int (xmldb_put_t)(xmldb_handle xh, const char *db, enum operation_type op, cxobj *xt, char *username, cbuf *cbret);
|
||||
|
|
@ -138,7 +138,7 @@ int xmldb_connect(clicon_handle h);
|
|||
int xmldb_disconnect(clicon_handle h);
|
||||
int xmldb_getopt(clicon_handle h, char *optname, void **value);
|
||||
int xmldb_setopt(clicon_handle h, char *optname, void *value);
|
||||
int xmldb_get(clicon_handle h, const char *db, char *xpath, int config, cxobj **xtop);
|
||||
int xmldb_get(clicon_handle h, const char *db, char *xpath, int config, cxobj **xtop, cxobj **xmodst);
|
||||
int xmldb_put(clicon_handle h, const char *db, enum operation_type op, cxobj *xt, char *username, cbuf *cbret);
|
||||
int xmldb_copy(clicon_handle h, const char *from, const char *to);
|
||||
int xmldb_lock(clicon_handle h, const char *db, int pid);
|
||||
|
|
|
|||
|
|
@ -53,7 +53,8 @@
|
|||
int modules_state_cache_set(clicon_handle h, cxobj *msx);
|
||||
int yang_modules_init(clicon_handle h);
|
||||
char *yang_modules_revision(clicon_handle h);
|
||||
|
||||
int yang_modules_state_get(clicon_handle h, yang_spec *yspec, char *xpath,
|
||||
cxobj **xret);
|
||||
int brief, cxobj **xret);
|
||||
|
||||
#endif /* _CLIXON_YANG_MODULE_H_ */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue