Symbolic and combined debug names in cmd-line of all applications

New debug levels: BACKEND, CLI, NETCONF,RESTCONF, SNMP, STREAM
This commit is contained in:
Olof hagsand 2024-02-02 11:47:01 +01:00
parent 86f251f343
commit 4e3bd6fbdd
39 changed files with 564 additions and 416 deletions

View file

@ -131,7 +131,7 @@ api_http_data_err(clixon_handle h,
int retval = -1;
cbuf *cb = NULL;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if ((cb = cbuf_new()) == NULL){
clixon_err(OE_UNIX, errno, "cbuf_new");
goto done;
@ -153,7 +153,7 @@ api_http_data_err(clixon_handle h,
// ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
if (cb)
cbuf_free(cb);
return retval;
@ -192,7 +192,7 @@ http_data_check_file_path(clixon_handle h,
goto done;
}
p = cbuf_get(cbpath);
clixon_debug(CLIXON_DBG_CLIENT, "%s", p);
clixon_debug(CLIXON_DBG_RESTCONF, "%s", p);
if (strncmp(prefix, p, strlen(prefix)) != 0){
clixon_err(OE_UNIX, EINVAL, "prefix is not prefix of cbpath");
goto done;
@ -202,31 +202,31 @@ http_data_check_file_path(clixon_handle h,
p[i] = '\0';
/* Ensure not soft link */
if (lstat(p, &fstat) < 0){
clixon_debug(CLIXON_DBG_CLIENT, "Error lstat(%s):%s", p, strerror(errno));
clixon_debug(CLIXON_DBG_RESTCONF, "Error lstat(%s):%s", p, strerror(errno));
code = 404;
goto invalid;
}
if (!S_ISDIR(fstat.st_mode)){
clixon_debug(CLIXON_DBG_CLIENT, "Error lstat(%s): Not dir", p);
clixon_debug(CLIXON_DBG_RESTCONF, "Error lstat(%s): Not dir", p);
code = 403;
goto invalid;
}
p[i] = '/';
}
else if (p[i] == '~'){
clixon_debug(CLIXON_DBG_CLIENT, "Error lstat(%s): ~ not allowed in file path", p);
clixon_debug(CLIXON_DBG_RESTCONF, "Error lstat(%s): ~ not allowed in file path", p);
code = 403;
goto invalid;
}
else if (p[i] == '.' && i>strlen(prefix) && p[i-1] == '.'){
clixon_debug(CLIXON_DBG_CLIENT, "Error lstat(%s): .. not allowed in file path", p);
clixon_debug(CLIXON_DBG_RESTCONF, "Error lstat(%s): .. not allowed in file path", p);
code = 403;
goto invalid;
}
}
/* Resulting file (ensure not soft link) */
if (lstat(p, &fstat) < 0){
clixon_debug(CLIXON_DBG_CLIENT, "Error lstat(%s):%s", p, strerror(errno));
clixon_debug(CLIXON_DBG_RESTCONF, "Error lstat(%s):%s", p, strerror(errno));
code = 404;
goto invalid;
}
@ -235,22 +235,22 @@ http_data_check_file_path(clixon_handle h,
if (S_ISDIR(fstat.st_mode)){
cprintf(cbpath, "/%s", HTTP_DATA_INTERNAL_REDIRECT);
p = cbuf_get(cbpath);
clixon_debug(CLIXON_DBG_CLIENT, "internal redirect: %s", p);
clixon_debug(CLIXON_DBG_RESTCONF, "internal redirect: %s", p);
if (lstat(p, &fstat) < 0){
clixon_debug(CLIXON_DBG_CLIENT, "Error lstat(%s):%s", p, strerror(errno));
clixon_debug(CLIXON_DBG_RESTCONF, "Error lstat(%s):%s", p, strerror(errno));
code = 404;
goto invalid;
}
}
#endif
if (!S_ISREG(fstat.st_mode)){
clixon_debug(CLIXON_DBG_CLIENT, "Error lstat(%s): Not regular file", p);
clixon_debug(CLIXON_DBG_RESTCONF, "Error lstat(%s): Not regular file", p);
code = 403;
goto invalid;
}
*fsz = fstat.st_size;
if ((f = fopen(p, "rb")) == NULL){
clixon_debug(CLIXON_DBG_CLIENT, "Error fopen(%s) %s", p, strerror(errno));
clixon_debug(CLIXON_DBG_RESTCONF, "Error fopen(%s) %s", p, strerror(errno));
code = 403;
goto invalid;
}
@ -296,7 +296,7 @@ api_http_data_file(clixon_handle h,
char *buf = NULL;
size_t sz;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if ((cbfile = cbuf_new()) == NULL){
clixon_err(OE_UNIX, errno, "cbuf_new");
goto done;
@ -309,7 +309,7 @@ api_http_data_file(clixon_handle h,
cprintf(cbfile, "%s", www_data_root);
if (pathname){
if (strlen(pathname) && pathname[0] != '/'){
clixon_debug(CLIXON_DBG_CLIENT, "Error fopen(%s) pathname not prefixed with /",
clixon_debug(CLIXON_DBG_RESTCONF, "Error fopen(%s) pathname not prefixed with /",
pathname);
if (api_http_data_err(h, req, 404) < 0)
goto done;
@ -338,7 +338,7 @@ api_http_data_file(clixon_handle h,
fsize = ftell(f);
/* Extra sanity check, had some problems with wrong file types */
if (fsz != fsize){
clixon_debug(CLIXON_DBG_CLIENT, "Error file %s size mismatch sz:%zu vs %li",
clixon_debug(CLIXON_DBG_RESTCONF, "Error file %s size mismatch sz:%zu vs %li",
filename, (size_t)fsz, fsize);
if (api_http_data_err(h, req, 500) < 0) /* Internal error? */
goto done;
@ -362,7 +362,7 @@ api_http_data_file(clixon_handle h,
}
sz = (size_t)ret;
if (sz != 1){
clixon_debug(CLIXON_DBG_CLIENT, "Error fread(%s) sz:%zu", filename, sz);
clixon_debug(CLIXON_DBG_RESTCONF, "Error fread(%s) sz:%zu", filename, sz);
if (api_http_data_err(h, req, 500) < 0) /* Internal error? */
goto done;
goto ok;
@ -376,7 +376,7 @@ api_http_data_file(clixon_handle h,
if (restconf_reply_send(req, 200, cbdata, head) < 0)
goto done;
cbdata = NULL; /* consumed by reply-send */
clixon_debug(CLIXON_DBG_CLIENT, "Read %s OK", filename);
clixon_debug(CLIXON_DBG_RESTCONF, "Read %s OK", filename);
ok:
retval = 0;
done:
@ -423,7 +423,7 @@ api_http_data(clixon_handle h,
cbuf *indata = NULL;
char *path = NULL;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if (req == NULL){
errno = EINVAL;
goto done;
@ -498,6 +498,6 @@ api_http_data(clixon_handle h,
done:
if (path)
free(path);
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
}

View file

@ -86,7 +86,7 @@ restconf_reply_header(void *req0,
char *value = NULL;
va_list ap;
clixon_debug(CLIXON_DBG_CLIENT, "%s", name);
clixon_debug(CLIXON_DBG_RESTCONF, "%s", name);
if (sd == NULL || name == NULL || vfmt == NULL){
clixon_err(OE_CFG, EINVAL, "sd, name or value is NULL");
goto done;
@ -142,7 +142,7 @@ restconf_reply_send(void *req0,
int retval = -1;
restconf_stream_data *sd = (restconf_stream_data *)req0;
clixon_debug(CLIXON_DBG_CLIENT, "code:%d", code);
clixon_debug(CLIXON_DBG_RESTCONF, "code:%d", code);
if (sd == NULL){
clixon_err(OE_CFG, EINVAL, "sd is NULL");
goto done;

View file

@ -218,7 +218,7 @@ api_return_err(clixon_handle h,
cxobj *xmsg;
char *mb;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if ((cb = cbuf_new()) == NULL){
clixon_err(OE_UNIX, errno, "cbuf_new");
goto done;
@ -249,7 +249,7 @@ api_return_err(clixon_handle h,
}
}
#if 1
clixon_debug_xml(CLIXON_DBG_CLIENT, xerr, "Send error:");
clixon_debug_xml(CLIXON_DBG_RESTCONF, xerr, "Send error:");
#endif
if (xml_name_set(xerr, "error") < 0)
goto done;
@ -286,7 +286,7 @@ api_return_err(clixon_handle h,
case YANG_DATA_XML:
case YANG_PATCH_XML:
case YANG_PAGINATION_XML:
clixon_debug(CLIXON_DBG_CLIENT, "code:%d", code);
clixon_debug(CLIXON_DBG_RESTCONF, "code:%d", code);
if (pretty){
cprintf(cb, " <errors xmlns=\"urn:ietf:params:xml:ns:yang:ietf-restconf\">\n");
if (clixon_xml2cbuf(cb, xerr, 2, pretty, NULL, -1, 0) < 0)
@ -302,7 +302,7 @@ api_return_err(clixon_handle h,
break;
case YANG_DATA_JSON:
case YANG_PATCH_JSON:
clixon_debug(CLIXON_DBG_CLIENT, "code:%d", code);
clixon_debug(CLIXON_DBG_RESTCONF, "code:%d", code);
if (pretty){
cprintf(cb, "{\n\"ietf-restconf:errors\" : ");
if (clixon_json2cbuf(cb, xerr, pretty, 0, 0) < 0)
@ -329,7 +329,7 @@ api_return_err(clixon_handle h,
// ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
if (cb)
cbuf_free(cb);
if (cberr)

View file

@ -160,7 +160,7 @@ restconf_param_set(clixon_handle h,
{
struct restconf_handle *rh = handle(h);
clixon_debug(CLIXON_DBG_CLIENT, "%s=%s", param, val);
clixon_debug(CLIXON_DBG_RESTCONF, "%s=%s", param, val);
if (rh->rh_params == NULL)
if ((rh->rh_params = clicon_hash_init()) == NULL)
return -1;

View file

@ -90,7 +90,7 @@ _http1_parse(clixon_handle h,
clixon_http1_yacc hy = {0,};
int ret;
clixon_debug(CLIXON_DBG_CLIENT, "\n%s", str);
clixon_debug(CLIXON_DBG_RESTCONF, "\n%s", str);
if (strlen(str) == 0)
goto ok;
hy.hy_parse_string = str;
@ -119,7 +119,7 @@ _http1_parse(clixon_handle h,
ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
}
@ -147,7 +147,7 @@ clixon_http1_parse_file(clixon_handle h,
int len = 0;
int oldbuflen;
clixon_debug(CLIXON_DBG_CLIENT, "%s", filename);
clixon_debug(CLIXON_DBG_RESTCONF, "%s", filename);
if (f == NULL){
clixon_err(OE_RESTCONF, EINVAL, "f is NULL");
goto done;
@ -302,7 +302,7 @@ restconf_http1_reply(restconf_conn *rc,
int retval = -1;
cg_var *cv;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
/* If body, add a content-length header
* A server MUST NOT send a Content-Length header field in any response
* with a status code of 1xx (Informational) or 204 (No Content). A
@ -365,7 +365,7 @@ restconf_http1_path_root(clixon_handle h,
int ret;
#endif
clixon_debug(CLIXON_DBG_CLIENT, "------------");
clixon_debug(CLIXON_DBG_RESTCONF, "------------");
pretty = restconf_pretty_get(h);
if ((sd = restconf_stream_find(rc, 0)) == NULL){
clixon_err(OE_RESTCONF, EINVAL, "No stream_data");
@ -463,7 +463,7 @@ restconf_http1_path_root(clixon_handle h,
goto done;
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
if (subject)
free(subject);
if (xerr)

View file

@ -360,7 +360,7 @@ restconf_terminate(clixon_handle h)
cxobj *x;
int fs; /* fgcx socket */
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if ((fs = clicon_socket_get(h)) != -1)
close(fs);
/* Delete all plugins, and RPC callbacks */
@ -378,7 +378,7 @@ restconf_terminate(clixon_handle h)
xpath_optimize_exit();
restconf_handle_exit(h);
clixon_err_exit();
clixon_debug(CLIXON_DBG_CLIENT, "pid:%u done", getpid());
clixon_debug(CLIXON_DBG_RESTCONF, "pid:%u done", getpid());
clixon_log_exit(); /* Must be after last clixon_debug */
return 0;
}
@ -524,7 +524,7 @@ restconf_main_extension_cb(clixon_handle h,
extname = yang_argument_get(yext);
if (strcmp(modname, "ietf-restconf") != 0 || strcmp(extname, "yang-data") != 0)
goto ok;
clixon_debug(CLIXON_DBG_CLIENT, "Enabled extension:%s:%s", modname, extname);
clixon_debug(CLIXON_DBG_RESTCONF, "Enabled extension:%s:%s", modname, extname);
if ((yc = yang_find(ys, 0, NULL)) == NULL)
goto ok;
if ((yn = ys_dup(yc)) == NULL)
@ -584,7 +584,7 @@ restconf_drop_privileges(clixon_handle h)
char *user;
enum priv_mode_t priv_mode = PM_NONE;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
/* Sanity check: backend group exists */
if ((group = clicon_sock_group(h)) == NULL){
clixon_err(OE_FATAL, 0, "clicon_sock_group option not set");
@ -639,7 +639,7 @@ restconf_drop_privileges(clixon_handle h)
case PM_NONE:
break; /* catched above */
}
clixon_debug(CLIXON_DBG_CLIENT, "dropped privileges from root to %s(%d)",
clixon_debug(CLIXON_DBG_RESTCONF, "dropped privileges from root to %s(%d)",
user, newuid);
ok:
retval = 0;
@ -673,7 +673,7 @@ restconf_authentication_cb(clixon_handle h,
char *anonymous = NULL;
auth_type = restconf_auth_type_get(h);
clixon_debug(CLIXON_DBG_CLIENT, "auth-type:%s", clixon_auth_type_int2str(auth_type));
clixon_debug(CLIXON_DBG_RESTCONF, "auth-type:%s", clixon_auth_type_int2str(auth_type));
ret = 0;
authenticated = 0;
/* ret: -1 Error, 0: Ignore/not handled, 1: OK see authenticated parameter */
@ -725,7 +725,7 @@ restconf_authentication_cb(clixon_handle h,
/* If set but no user, set a dummy user */
retval = 1;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d authenticated:%d user:%s",
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d authenticated:%d user:%s",
retval, authenticated, clicon_username_get(h));
if (username)
free(username);
@ -768,7 +768,7 @@ restconf_config_init(clixon_handle h,
if ((x = xpath_first(xrestconf, nsc, "enable")) != NULL &&
(enable = xml_body(x)) != NULL){
if (strcmp(enable, "false") == 0){
clixon_debug(CLIXON_DBG_CLIENT, "restconf disabled");
clixon_debug(CLIXON_DBG_RESTCONF, "restconf disabled");
goto disable;
}
}
@ -848,7 +848,7 @@ restconf_socket_init(const char *netns0,
size_t sa_len;
const char *netns;
clixon_debug(CLIXON_DBG_CLIENT, "%s %s %s %hu", netns0, addrtype, addrstr, port);
clixon_debug(CLIXON_DBG_RESTCONF, "%s %s %s %hu", netns0, addrtype, addrstr, port);
/* netns default -> NULL */
if (netns0 != NULL && strcmp(netns0, RESTCONF_NETNS_DEFAULT)==0)
netns = NULL;
@ -858,10 +858,10 @@ restconf_socket_init(const char *netns0,
goto done;
if (clixon_netns_socket(netns, sa, sa_len, backlog, flags, addrstr, ss) < 0)
goto done;
clixon_debug(CLIXON_DBG_CLIENT, "ss=%d", *ss);
clixon_debug(CLIXON_DBG_RESTCONF, "ss=%d", *ss);
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
}

View file

@ -107,7 +107,7 @@ fcgi_params_set(clixon_handle h,
char *param = NULL;
char *val = NULL;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
for (i = 0; envp[i] != NULL; i++){ /* on the form <param>=<value> */
if (clixon_strsplit(envp[i], '=', &param, &val) < 0)
goto done;
@ -124,7 +124,7 @@ fcgi_params_set(clixon_handle h,
}
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
}
@ -147,7 +147,7 @@ restconf_main_config(clixon_handle h,
/* 1. try inline configure option */
if (inline_config != NULL && strlen(inline_config)){
clixon_debug(CLIXON_DBG_CLIENT, "restconf_main_fcgi using restconf inline config");
clixon_debug(CLIXON_DBG_RESTCONF, "restconf_main_fcgi using restconf inline config");
if ((ret = clixon_xml_parse_string(inline_config, YB_MODULE, yspec, &xrestconf, &xerr)) < 0)
goto done;
if (ret == 0){
@ -228,12 +228,12 @@ restconf_sig_term(int arg)
{
static int i=0;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if (i++ == 0)
clixon_log(NULL, LOG_NOTICE, "%s: %s: pid: %u Signal %d",
__PROGRAM__, __FUNCTION__, getpid(), arg);
else{
clixon_debug(CLIXON_DBG_CLIENT, "done");
clixon_debug(CLIXON_DBG_RESTCONF, "done");
exit(-1);
}
@ -272,7 +272,7 @@ usage(clixon_handle h,
"where options are\n"
"\t-h \t\t Help\n"
"\t-V \t\tPrint version and exit\n"
"\t-D <level>\t Debug level\n"
"\t-D <level>\tDebug level (see available levels below)\n"
"\t-f <file>\t Configuration file (mandatory)\n"
"\t-E <dir> \t Extra configuration file directory\n"
"\t-l <s|e|o|n|f<file>> \tLog on (s)yslog, std(e)rr, std(o)ut, (n)one or (f)ile (syslog is default)\n"
@ -288,6 +288,9 @@ usage(clixon_handle h,
"\t-o \"<option>=<value>\" Give configuration option overriding config file (see clixon-config.yang)\n",
argv0
);
fprintf(stderr, "Debug keys: ");
clixon_debug_key_dump(stderr);
fprintf(stderr, "\n");
exit(0);
}
@ -345,10 +348,16 @@ main(int argc,
cligen_output(stdout, "Clixon version %s\n", CLIXON_VERSION_STRING);
print_version++; /* plugins may also print versions w ca-version callback */
break;
case 'D' : /* debug */
if (sscanf(optarg, "%d", &dbg) != 1)
case 'D' : { /* debug */
int d = 0;
/* Try first symbolic, then numeric match */
if ((d = clixon_debug_str2key(optarg)) < 0 &&
sscanf(optarg, "%d", &d) != 1){
usage(h, argv[0]);
}
dbg |= d;
break;
}
case 'f': /* override config file */
if (!strlen(optarg))
usage(h, argv[0]);
@ -582,7 +591,7 @@ main(int argc,
clixon_err(OE_CFG, errno, "FCGX_Init");
goto done;
}
clixon_debug(CLIXON_DBG_CLIENT, "restconf_main: Opening FCGX socket: %s", sockpath);
clixon_debug(CLIXON_DBG_RESTCONF, "restconf_main: Opening FCGX socket: %s", sockpath);
if ((sock = FCGX_OpenSocket(sockpath, 10)) < 0){
clixon_err(OE_CFG, errno, "FCGX_OpenSocket");
goto done;
@ -629,7 +638,7 @@ main(int argc,
clixon_err(OE_CFG, errno, "FCGX_Accept_r");
goto done;
}
clixon_debug(CLIXON_DBG_CLIENT, "------------");
clixon_debug(CLIXON_DBG_RESTCONF, "------------");
/* Translate from FCGI parameter form to Clixon runtime data
* XXX: potential name collision?
@ -637,7 +646,7 @@ main(int argc,
if (fcgi_params_set(h, req->envp) < 0)
goto done;
if ((path = restconf_param_get(h, "REQUEST_URI")) == NULL){
clixon_debug(CLIXON_DBG_CLIENT, "NULL URI");
clixon_debug(CLIXON_DBG_RESTCONF, "NULL URI");
}
else {
/* Matching algorithm:
@ -669,7 +678,7 @@ main(int argc,
(void)api_stream(h, req, qvec, &finish);
}
else{
clixon_debug(CLIXON_DBG_CLIENT, "top-level %s not found", path);
clixon_debug(CLIXON_DBG_RESTCONF, "top-level %s not found", path);
if (netconf_invalid_value_xml(&xerr, "protocol", "Top-level path not found") < 0)
goto done;
if (api_return_err0(h, req, xerr, 1, YANG_DATA_JSON, 0) < 0)

View file

@ -217,7 +217,7 @@ clixon_openssl_log_cb(void *handle,
int suberr,
cbuf *cb)
{
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
ERR_print_errors_cb(print_cb, cb);
return 0;
}
@ -266,17 +266,17 @@ restconf_verify_certs(int preverify_ok,
depth = X509_STORE_CTX_get_error_depth(store);
// ssl = X509_STORE_CTX_get_ex_data(store, SSL_get_ex_data_X509_STORE_CTX_idx());
clixon_debug(CLIXON_DBG_CLIENT, "preverify_ok:%d err:%d depth:%d", preverify_ok, err, depth);
clixon_debug(CLIXON_DBG_RESTCONF, "preverify_ok:%d err:%d depth:%d", preverify_ok, err, depth);
X509_NAME_oneline(X509_get_subject_name(err_cert), buf, 256);
switch (err){
case X509_V_ERR_HOSTNAME_MISMATCH:
clixon_debug(CLIXON_DBG_CLIENT, "X509_V_ERR_HOSTNAME_MISMATCH");
clixon_debug(CLIXON_DBG_RESTCONF, "X509_V_ERR_HOSTNAME_MISMATCH");
break;
case X509_V_ERR_CERT_HAS_EXPIRED:
clixon_debug(CLIXON_DBG_CLIENT, "X509_V_ERR_CERT_HAS_EXPIRED");
clixon_debug(CLIXON_DBG_RESTCONF, "X509_V_ERR_CERT_HAS_EXPIRED");
break;
case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
clixon_debug(CLIXON_DBG_CLIENT, "X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT");
clixon_debug(CLIXON_DBG_RESTCONF, "X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT");
break;
}
/* Catch a too long certificate chain. should be +1 in SSL_CTX_set_verify_depth() */
@ -305,7 +305,7 @@ alpn_proto_dump(const char *label,
const char *inp,
unsigned len)
{
clixon_debug(CLIXON_DBG_CLIENT, "%s %.*s", label, (int)len, inp);
clixon_debug(CLIXON_DBG_RESTCONF, "%s %.*s", label, (int)len, inp);
return 0;
}
@ -327,7 +327,7 @@ alpn_select_proto_cb(SSL *ssl,
unsigned char len;
int pref = 0;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
/* select http/1.1 */
inp = (unsigned char*)in;
while ((inp-in) < inlen) {
@ -456,18 +456,18 @@ restconf_listcerts(SSL *ssl)
X509 *cert;
char *line;
clixon_debug(CLIXON_DBG_CLIENT, "get peer certificates:");
clixon_debug(CLIXON_DBG_RESTCONF, "get peer certificates:");
if ((cert = SSL_get_peer_certificate(ssl)) != NULL) { /* Get certificates (if available) */
if ((line = X509_NAME_oneline(X509_get_subject_name(cert), 0, 0)) != NULL){
clixon_debug(CLIXON_DBG_CLIENT, "Subject: %s", line);
clixon_debug(CLIXON_DBG_RESTCONF, "Subject: %s", line);
free(line);
}
if ((line = X509_NAME_oneline(X509_get_issuer_name(cert), 0, 0)) != NULL){
clixon_debug(CLIXON_DBG_CLIENT, "Issuer: %s", line);
clixon_debug(CLIXON_DBG_RESTCONF, "Issuer: %s", line);
free(line);
}
if ((line = X509_NAME_oneline(X509_get_subject_name(cert), 0, 0)) != NULL){
clixon_debug(CLIXON_DBG_CLIENT, "Subject: %s", line);
clixon_debug(CLIXON_DBG_RESTCONF, "Subject: %s", line);
free(line);
}
X509_free(cert);
@ -534,7 +534,7 @@ restconf_accept_client(int fd,
char *name = NULL;
void *addr;
clixon_debug(CLIXON_DBG_CLIENT, "%d", fd);
clixon_debug(CLIXON_DBG_RESTCONF, "%d", fd);
if ((rsock = (restconf_socket *)arg) == NULL){
clixon_err(OE_YANG, EINVAL, "rsock is NULL");
goto done;
@ -570,7 +570,7 @@ restconf_accept_client(int fd,
}
if (inet_ntop(from.sa_family, addr, rsock->rs_from_addr, INET6_ADDRSTRLEN) < 0)
goto done;
clixon_debug(CLIXON_DBG_CLIENT, "type:%s from:%s, dest:%s port:%hu",
clixon_debug(CLIXON_DBG_RESTCONF, "type:%s from:%s, dest:%s port:%hu",
rsock->rs_addrtype,
rsock->rs_from_addr,
rsock->rs_addrstr,
@ -581,7 +581,7 @@ restconf_accept_client(int fd,
goto done;
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
if (name)
free(name);
return retval;
@ -596,7 +596,7 @@ restconf_native_terminate(clixon_handle h)
restconf_socket *rsock;
restconf_conn *rc;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if ((rn = restconf_native_handle_get(h)) != NULL){
while ((rsock = rn->rn_sockets) != NULL){
while ((rc = rsock->rs_conns) != NULL){
@ -728,7 +728,7 @@ openssl_init_socket(clixon_handle h,
restconf_socket *rsock = NULL; /* openssl per socket struct */
struct timeval now;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
/*
* Create per-socket openssl handle
* See restconf_native_terminate for freeing
@ -825,7 +825,7 @@ restconf_openssl_init(clixon_handle h,
size_t veclen;
int i;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
/* flag used for sanity of certs */
ssl_enable = xpath_first(xrestconf, nsc, "socket[ssl='true']") != NULL;
/* Auth type set in config */
@ -1022,7 +1022,7 @@ restconf_clixon_init(clixon_handle h,
if (clicon_nsctx_global_set(h, nsctx_global) < 0)
goto done;
if (inline_config != NULL && strlen(inline_config)){
clixon_debug(CLIXON_DBG_CLIENT, "reading from inline config");
clixon_debug(CLIXON_DBG_RESTCONF, "reading from inline config");
if ((ret = clixon_xml_parse_string(inline_config, YB_MODULE, yspec, &xrestconf, &xerr)) < 0)
goto done;
if (ret == 0){
@ -1044,7 +1044,7 @@ restconf_clixon_init(clixon_handle h,
goto done;
}
else if (clicon_option_bool(h, "CLICON_BACKEND_RESTCONF_PROCESS") == 0){
clixon_debug(CLIXON_DBG_CLIENT, "reading from clixon config");
clixon_debug(CLIXON_DBG_RESTCONF, "reading from clixon config");
/* If not read from backend, try to get restconf config from local config-file */
if ((xrestconf = clicon_conf_restconf(h)) != NULL){
/* Basic config init, set auth-type, pretty, etc ret 0 means disabled */
@ -1062,7 +1062,7 @@ restconf_clixon_init(clixon_handle h,
/* If no local config, or it is disabled, try to query backend of config.
*/
else {
clixon_debug(CLIXON_DBG_CLIENT, "reading from backend datastore config");
clixon_debug(CLIXON_DBG_RESTCONF, "reading from backend datastore config");
if ((ret = restconf_clixon_backend(h, xrestconfp)) < 0)
goto done;
if (ret == 0)
@ -1111,7 +1111,7 @@ usage(clixon_handle h,
"where options are\n"
"\t-h \t\t Help\n"
"\t-V \t\tPrint version and exit\n"
"\t-D <level>\t Debug level, overrides any config debug setting\n"
"\t-D <level>\tDebug level (see available levels below)\n"
"\t-f <file>\t Configuration file (mandatory)\n"
"\t-E <dir> \t Extra configuration file directory\n"
"\t-l <s|e|o|n|f<file>> \tLog on (s)yslog, std(e)rr, std(o)ut, (n)one or (f)ile (syslog is default)\n"
@ -1127,6 +1127,9 @@ usage(clixon_handle h,
,
argv0
);
fprintf(stderr, "Debug keys: ");
clixon_debug_key_dump(stderr);
fprintf(stderr, "\n");
exit(0);
}
@ -1168,9 +1171,17 @@ main(int argc,
cligen_output(stdout, "Clixon version %s\n", CLIXON_VERSION_STRING);
print_version++; /* plugins may also print versions w ca-version callback */
break;
case 'D' : /* debug. Note this overrides any setting in the config */
if (sscanf(optarg, "%d", &dbg) != 1)
usage(h, argv0);
case 'D' : { /* debug. Note this overrides any setting in the config */
int d = 0;
/* Try first symbolic, then numeric match */
if ((d = clixon_debug_str2key(optarg)) < 0 &&
sscanf(optarg, "%d", &d) != 1){
usage(h, argv[0]);
}
dbg |= d;
break;
}
break;
case 'f': /* override config file */
if (!strlen(optarg))
@ -1352,7 +1363,7 @@ main(int argc,
ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "restconf_main_openssl done");
clixon_debug(CLIXON_DBG_RESTCONF, "restconf_main_openssl done");
if (xrestconf)
xml_free(xrestconf);
restconf_native_terminate(h);

View file

@ -98,7 +98,7 @@ api_data_options(clixon_handle h,
{
int retval = -1;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if (restconf_reply_header(req, "Allow", "OPTIONS,HEAD,GET,POST,PUT,PATCH,DELETE") < 0)
goto done;
if (restconf_reply_header(req, "Accept-Patch", "application/yang-data+xml,application/yang-data+json") < 0)
@ -142,7 +142,7 @@ match_list_keys(yang_stmt *y,
char *key1;
char *key2;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
switch (yang_keyword_get(y)){
case Y_LIST:
if ((cvk = yang_cvec_get(y)) == NULL) /* Use Y_LIST cache, see ys_populate_list() */
@ -176,7 +176,7 @@ match_list_keys(yang_stmt *y,
ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
}
@ -236,8 +236,8 @@ api_data_write(clixon_handle h,
char *xpath = NULL;
char *attr;
clixon_debug(CLIXON_DBG_CLIENT, "api_path:\"%s\"", api_path0);
clixon_debug(CLIXON_DBG_CLIENT, "data:\"%s\"", data);
clixon_debug(CLIXON_DBG_RESTCONF, "api_path:\"%s\"", api_path0);
clixon_debug(CLIXON_DBG_RESTCONF, "data:\"%s\"", data);
if ((yspec = clicon_dbspec_yang(h)) == NULL){
clixon_err(OE_FATAL, 0, "No DB_SPEC");
goto done;
@ -427,7 +427,7 @@ api_data_write(clixon_handle h,
/* There is an api-path that defines an element in the datastore tree.
* Not top-of-tree.
*/
clixon_debug(CLIXON_DBG_CLIENT, "Comparing bottom-of api-path (%s) with top-of-data (%s)", xml_name(xbot), dname);
clixon_debug(CLIXON_DBG_RESTCONF, "Comparing bottom-of api-path (%s) with top-of-data (%s)", xml_name(xbot), dname);
/* Check same symbol in api-path as data */
if (strcmp(dname, xml_name(xbot))){
@ -492,11 +492,11 @@ api_data_write(clixon_handle h,
/* If we already have that default namespace, remove it in child */
if ((xa = xml_find_type(xdata, NULL, "xmlns", CX_ATTR)) != NULL){
if (xml2ns(xparent, NULL, &namespace) < 0){
clixon_debug(CLIXON_DBG_CLIENT, "G done");
clixon_debug(CLIXON_DBG_RESTCONF, "G done");
goto done;
}
if (namespace == NULL){
clixon_debug_xml(CLIXON_DBG_CLIENT, xparent, "xparent:");
clixon_debug_xml(CLIXON_DBG_RESTCONF, xparent, "xparent:");
/* XXX */
}
/* Set xmlns="" default namespace attribute (if diff from default) */
@ -540,7 +540,7 @@ api_data_write(clixon_handle h,
if (clixon_xml2cbuf(cbx, xtop, 0, 0, NULL, -1, 0) < 0)
goto done;
cprintf(cbx, "</edit-config></rpc>");
clixon_debug(CLIXON_DBG_CLIENT, "xml: %s api_path:%s", cbuf_get(cbx), api_path);
clixon_debug(CLIXON_DBG_RESTCONF, "xml: %s api_path:%s", cbuf_get(cbx), api_path);
if (clicon_rpc_netconf(h, cbuf_get(cbx), &xret, NULL) < 0)
goto done;
if ((xe = xpath_first(xret, NULL, "//rpc-error")) != NULL){
@ -560,7 +560,7 @@ api_data_write(clixon_handle h,
ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
if (xpath)
free(xpath);
if (nsc)
@ -737,7 +737,7 @@ api_data_delete(clixon_handle h,
int ret;
cxobj *xe; /* xml error, no free */
clixon_debug(CLIXON_DBG_CLIENT, "api_path:%s", api_path);
clixon_debug(CLIXON_DBG_RESTCONF, "api_path:%s", api_path);
if ((yspec = clicon_dbspec_yang(h)) == NULL){
clixon_err(OE_FATAL, 0, "No DB_SPEC");
goto done;
@ -821,7 +821,7 @@ api_data_delete(clixon_handle h,
xml_free(xretdis);
if (xtop)
xml_free(xtop);
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
}

View file

@ -128,7 +128,7 @@ api_data_get2(clixon_handle h,
char *defaults = NULL;
cvec *nscd = NULL;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if ((yspec = clicon_dbspec_yang(h)) == NULL){
clixon_err(OE_FATAL, 0, "No DB_SPEC");
goto done;
@ -168,7 +168,7 @@ api_data_get2(clixon_handle h,
}
/* Check for content attribute */
if ((attr = cvec_find_str(qvec, "content")) != NULL){
clixon_debug(CLIXON_DBG_CLIENT, "content=%s", attr);
clixon_debug(CLIXON_DBG_RESTCONF, "content=%s", attr);
if ((int)(content = netconf_content_str2int(attr)) == -1){
if (netconf_bad_attribute_xml(&xerr, "application",
"content", "Unrecognized value of content attribute") < 0)
@ -180,7 +180,7 @@ api_data_get2(clixon_handle h,
}
/* Check for depth attribute */
if ((attr = cvec_find_str(qvec, "depth")) != NULL){
clixon_debug(CLIXON_DBG_CLIENT, "depth=%s", attr);
clixon_debug(CLIXON_DBG_RESTCONF, "depth=%s", attr);
if (strcmp(attr, "unbounded") != 0){
char *reason = NULL;
if ((ret = parse_int32(attr, &depth, &reason)) < 0){
@ -198,11 +198,11 @@ api_data_get2(clixon_handle h,
}
}
if ((attr = cvec_find_str(qvec, "with-defaults")) != NULL){
clixon_debug(CLIXON_DBG_CLIENT, "with_defaults=%s", attr);
clixon_debug(CLIXON_DBG_RESTCONF, "with_defaults=%s", attr);
defaults = attr;
}
clixon_debug(CLIXON_DBG_CLIENT, "path:%s", xpath);
clixon_debug(CLIXON_DBG_RESTCONF, "path:%s", xpath);
ret = clicon_rpc_get(h, xpath, nsc, content, depth, defaults, &xret);
if (ret < 0){
@ -217,7 +217,7 @@ api_data_get2(clixon_handle h,
*/
#if 0 /* DEBUG */
if (clixon_debug_get())
clixon_debug_xml(CLIXON_DBG_CLIENT, xret, "xret:");
clixon_debug_xml(CLIXON_DBG_RESTCONF, xret, "xret:");
#endif
/* Check if error return */
if ((xe = xpath_first(xret, NULL, "//rpc-error")) != NULL){
@ -292,7 +292,7 @@ api_data_get2(clixon_handle h,
break;
}
}
clixon_debug(CLIXON_DBG_CLIENT, "cbuf:%s", cbuf_get(cbx));
clixon_debug(CLIXON_DBG_RESTCONF, "cbuf:%s", cbuf_get(cbx));
if (restconf_reply_header(req, "Content-Type", "%s", restconf_media_int2str(media_out)) < 0)
goto done;
if (restconf_reply_header(req, "Cache-Control", "no-cache") < 0)
@ -303,7 +303,7 @@ api_data_get2(clixon_handle h,
ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
if (xpath)
free(xpath);
if (nscd)
@ -380,7 +380,7 @@ api_data_pagination(clixon_handle h,
char *where;
char *ns;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if ((yspec = clicon_dbspec_yang(h)) == NULL){
clixon_err(OE_FATAL, 0, "No DB_SPEC");
goto done;
@ -429,7 +429,7 @@ api_data_pagination(clixon_handle h,
/* Check for content attribute */
if ((attr = cvec_find_str(qvec, "content")) != NULL){
clixon_debug(CLIXON_DBG_CLIENT, "content=%s", attr);
clixon_debug(CLIXON_DBG_RESTCONF, "content=%s", attr);
if ((int)(content = netconf_content_str2int(attr)) == -1){
if (netconf_bad_attribute_xml(&xerr, "application",
"content", "Unrecognized value of content attribute") < 0)
@ -443,7 +443,7 @@ api_data_pagination(clixon_handle h,
goto ok;
}
}
clixon_debug(CLIXON_DBG_CLIENT, "path:%s", xpath);
clixon_debug(CLIXON_DBG_RESTCONF, "path:%s", xpath);
if (content != CONTENT_CONFIG && content != CONTENT_NONCONFIG && content != CONTENT_ALL){
clixon_err(OE_XML, EINVAL, "Invalid content attribute %d", content);
goto done;
@ -451,7 +451,7 @@ api_data_pagination(clixon_handle h,
/* Clixon extensions and collection attributes */
/* Check for depth attribute */
if ((attr = cvec_find_str(qvec, "depth")) != NULL){
clixon_debug(CLIXON_DBG_CLIENT, "depth=%s", attr);
clixon_debug(CLIXON_DBG_RESTCONF, "depth=%s", attr);
if (strcmp(attr, "unbounded") != 0){
char *reason = NULL;
if ((ret = parse_int32(attr, &depth, &reason)) < 0){
@ -506,7 +506,7 @@ api_data_pagination(clixon_handle h,
* We need to cut that tree to only the object.
*/
#if 0 /* DEBUG */
clixon_debug_xml(CLIXON_DBG_CLIENT, xret, "xret:");
clixon_debug_xml(CLIXON_DBG_RESTCONF, xret, "xret:");
#endif
/* Check if error return */
if ((xe = xpath_first(xret, NULL, "//rpc-error")) != NULL){
@ -555,7 +555,7 @@ api_data_pagination(clixon_handle h,
default:
break;
}
clixon_debug(CLIXON_DBG_CLIENT, "cbuf:%s", cbuf_get(cbx));
clixon_debug(CLIXON_DBG_RESTCONF, "cbuf:%s", cbuf_get(cbx));
if (restconf_reply_header(req, "Content-Type", "%s", restconf_media_int2str(media_out)) < 0)
goto done;
if (restconf_reply_header(req, "Cache-Control", "no-cache") < 0)
@ -566,7 +566,7 @@ api_data_pagination(clixon_handle h,
ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
if (xpath)
free(xpath);
if (nsc)
@ -718,7 +718,7 @@ api_operations_get(clixon_handle h,
cxobj *xt = NULL;
int i;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
yspec = clicon_dbspec_yang(h);
if ((cbx = cbuf_new()) == NULL)
goto done;
@ -786,7 +786,7 @@ api_operations_get(clixon_handle h,
// ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
if (cbx)
cbuf_free(cbx);
if (xt)

View file

@ -635,7 +635,7 @@ yang_patch_do_edit(clixon_handle h,
yang_stmt *ybot = NULL;
yang_stmt *ymod;
clixon_debug_xml(CLIXON_DBG_CLIENT, xn, "%d xn:", __LINE__);
clixon_debug_xml(CLIXON_DBG_RESTCONF, xn, "%d xn:", __LINE__);
/* Create cbufs:s */
if ((simple_patch_request_uri = cbuf_new()) == NULL){
clixon_err(OE_UNIX, errno, "cbuf_new");
@ -778,7 +778,7 @@ api_data_yang_patch(clixon_handle h,
size_t veclen;
cxobj **vec = NULL;
clixon_debug(CLIXON_DBG_CLIENT, "api_path:\"%s\"", api_path0);
clixon_debug(CLIXON_DBG_RESTCONF, "api_path:\"%s\"", api_path0);
if ((yspec = clicon_dbspec_yang(h)) == NULL){
clixon_err(OE_FATAL, 0, "No DB_SPEC");
goto done;

View file

@ -189,8 +189,8 @@ api_data_post(clixon_handle h,
int nrchildren0 = 0;
yang_bind yb;
clixon_debug(CLIXON_DBG_CLIENT, "api_path:\"%s\"", api_path);
clixon_debug(CLIXON_DBG_CLIENT, "data:\"%s\"", data);
clixon_debug(CLIXON_DBG_RESTCONF, "api_path:\"%s\"", api_path);
clixon_debug(CLIXON_DBG_RESTCONF, "data:\"%s\"", data);
if ((yspec = clicon_dbspec_yang(h)) == NULL){
clixon_err(OE_FATAL, 0, "No DB_SPEC");
goto done;
@ -276,7 +276,7 @@ api_data_post(clixon_handle h,
/* RFC 8040 4.4.1: The message-body MUST contain exactly one instance of the
* expected data resource.
*/
clixon_debug(CLIXON_DBG_CLIENT, "nrchildren0: %d", nrchildren0);
clixon_debug(CLIXON_DBG_RESTCONF, "nrchildren0: %d", nrchildren0);
if (xml_child_nr_type(xbot, CX_ELMNT) - nrchildren0 != 1){
if (netconf_malformed_message_xml(&xerr, "The message-body MUST contain exactly one instance of the expected data resource") < 0)
goto done;
@ -330,7 +330,7 @@ api_data_post(clixon_handle h,
if (restconf_insert_attributes(xdata, qvec) < 0)
goto done;
#if 1
clixon_debug_xml(CLIXON_DBG_CLIENT, xdata, "xdata:");
clixon_debug_xml(CLIXON_DBG_RESTCONF, xdata, "xdata:");
#endif
/* Create text buffer for transfer to backend */
@ -369,7 +369,7 @@ api_data_post(clixon_handle h,
if (clixon_xml2cbuf(cbx, xtop, 0, 0, NULL, -1, 0) < 0)
goto done;
cprintf(cbx, "</edit-config></rpc>");
clixon_debug(CLIXON_DBG_CLIENT, "xml: %s api_path:%s", cbuf_get(cbx), api_path);
clixon_debug(CLIXON_DBG_RESTCONF, "xml: %s api_path:%s", cbuf_get(cbx), api_path);
if (clicon_rpc_netconf(h, cbuf_get(cbx), &xret, NULL) < 0)
goto done;
if ((xe = xpath_first(xret, NULL, "//rpc-error")) != NULL){
@ -384,7 +384,7 @@ api_data_post(clixon_handle h,
ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
if (xret)
xml_free(xret);
if (xerr)
@ -441,7 +441,7 @@ api_operations_post_input(clixon_handle h,
int ret;
restconf_media media_in;
clixon_debug(CLIXON_DBG_CLIENT, "%s", data);
clixon_debug(CLIXON_DBG_RESTCONF, "%s", data);
if ((cbret = cbuf_new()) == NULL){
clixon_err(OE_UNIX, 0, "cbuf_new");
goto done;
@ -491,7 +491,7 @@ api_operations_post_input(clixon_handle h,
* <data><input xmlns="urn:example:clixon">...</input></data>
*/
#if 1
clixon_debug_xml(CLIXON_DBG_CLIENT, xdata, "xdata:");
clixon_debug_xml(CLIXON_DBG_RESTCONF, xdata, "xdata:");
#endif
/* Validate that exactly only <input> tag */
if ((xinput = xml_child_i_type(xdata, 0, CX_ELMNT)) == NULL ||
@ -509,7 +509,7 @@ api_operations_post_input(clixon_handle h,
goto done;
goto fail;
}
// clixon_debug(CLIXON_DBG_CLIENT, "input validation passed");
// clixon_debug(CLIXON_DBG_RESTCONF, "input validation passed");
/* Add all input under <rpc>path */
x = NULL;
while ((x = xml_child_i_type(xinput, 0, CX_ELMNT)) != NULL)
@ -520,7 +520,7 @@ api_operations_post_input(clixon_handle h,
// ok:
retval = 1;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval: %d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval: %d", retval);
if (cbret)
cbuf_free(cbret);
if (xerr)
@ -567,7 +567,7 @@ api_operations_post_output(clixon_handle h,
cxobj *xok;
int isempty;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
/* Validate that exactly only <rpc-reply> tag with exactly one element child */
if ((xoutput = xml_child_i_type(xret, 0, CX_ELMNT)) == NULL ||
strcmp(xml_name(xoutput),"rpc-reply") != 0
@ -588,7 +588,7 @@ api_operations_post_output(clixon_handle h,
xml_name_set(xoutput, "output");
/* xoutput should now look: <output><x xmlns="uri">0</x></output> */
#if 1
clixon_debug_xml(CLIXON_DBG_CLIENT, xoutput, "xoutput:");
clixon_debug_xml(CLIXON_DBG_RESTCONF, xoutput, "xoutput:");
#endif
/* Remove original netconf default namespace. Somewhat unsure what "output" belongs to? */
if ((xa = xml_find_type(xoutput, NULL, "xmlns", CX_ATTR)) != NULL)
@ -649,7 +649,7 @@ api_operations_post_output(clixon_handle h,
*xoutputp = xoutput;
retval = 1;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval: %d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval: %d", retval);
if (xerr)
xml_free(xerr);
return retval;
@ -722,7 +722,7 @@ api_operations_post(clixon_handle h,
char *namespace = NULL;
int nr = 0;
clixon_debug(CLIXON_DBG_CLIENT, "json:\"%s\" path:\"%s\"", data, api_path);
clixon_debug(CLIXON_DBG_RESTCONF, "json:\"%s\" path:\"%s\"", data, api_path);
/* 1. Initialize */
if ((yspec = clicon_dbspec_yang(h)) == NULL){
clixon_err(OE_FATAL, 0, "No DB_SPEC");
@ -792,7 +792,7 @@ api_operations_post(clixon_handle h,
* XML: <input xmlns="uri"><x>0</x></input>
*/
namespace = xml_find_type_value(xbot, NULL, "xmlns", CX_ATTR);
clixon_debug(CLIXON_DBG_CLIENT, "4. Parse input data: %s", data);
clixon_debug(CLIXON_DBG_RESTCONF, "4. Parse input data: %s", data);
if (data && strlen(data)){
if ((ret = api_operations_post_input(h, req, data, yspec, yrpc, xbot,
pretty, media_out)) < 0)
@ -803,7 +803,7 @@ api_operations_post(clixon_handle h,
/* Here xtop is:
<rpc username="foo"><myfn xmlns="uri"><x>42</x></myfn></rpc> */
#if 1
clixon_debug_xml(CLIXON_DBG_CLIENT, xtop, ". Translate input args:");
clixon_debug_xml(CLIXON_DBG_RESTCONF, xtop, ". Translate input args:");
#endif
/* 6. Validate outgoing RPC and fill in defaults */
if ((ret = xml_bind_yang_rpc(h, xtop, yspec, &xerr)) < 0) /* */
@ -824,7 +824,7 @@ api_operations_post(clixon_handle h,
* <rpc username="foo"><myfn xmlns="uri"><x>42</x><y>99</y></myfn></rpc>
*/
#if 0
clixon_debug_xml(CLIXON_DBG_CLIENT, xtop, "6. Validate and defaults:");
clixon_debug_xml(CLIXON_DBG_RESTCONF, xtop, "6. Validate and defaults:");
#endif
/* 7. Send to RPC handler, either local or backend
* Note (1) xtop is <rpc><method> xbot is <method>
@ -865,7 +865,7 @@ api_operations_post(clixon_handle h,
* <rpc-reply><x xmlns="uri">0</x></rpc-reply>
*/
#if 1
clixon_debug_xml(CLIXON_DBG_CLIENT, xret, "Receive reply:");
clixon_debug_xml(CLIXON_DBG_RESTCONF, xret, "Receive reply:");
#endif
youtput = yang_find(yrpc, Y_OUTPUT, NULL);
if ((ret = api_operations_post_output(h, req, xret, yspec, youtput, namespace,
@ -897,7 +897,7 @@ api_operations_post(clixon_handle h,
ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
if (prefix)
free(prefix);
if (id)

View file

@ -192,7 +192,7 @@ restconf_conn_new(clixon_handle h,
rc->rc_callhome = rsock->rs_callhome;
rc->rc_socket = rsock;
INSQ(rc, rsock->rs_conns);
clixon_debug(CLIXON_DBG_CLIENT, "%p", rc);
clixon_debug(CLIXON_DBG_RESTCONF, "%p", rc);
return rc;
}
@ -208,7 +208,7 @@ restconf_conn_free(restconf_conn *rc)
restconf_socket *rsock;
restconf_conn *rc1;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if (rc == NULL){
clixon_err(OE_RESTCONF, EINVAL, "rc is NULL");
goto done;
@ -416,7 +416,7 @@ native_buf_write(clixon_handle h,
}
memcpy(dbgstr, buf, sz);
dbgstr[sz] = '\0';
clixon_debug(CLIXON_DBG_CLIENT, "%s buflen:%zu buf:\n%s", callfn, buflen, dbgstr);
clixon_debug(CLIXON_DBG_RESTCONF, "%s buflen:%zu buf:\n%s", callfn, buflen, dbgstr);
free(dbgstr);
}
while (totlen < buflen){
@ -430,7 +430,7 @@ native_buf_write(clixon_handle h,
goto closed; /* Close socket and ssl */
}
else if (er == EAGAIN){
clixon_debug(CLIXON_DBG_CLIENT, "write EAGAIN");
clixon_debug(CLIXON_DBG_RESTCONF, "write EAGAIN");
usleep(10000);
continue;
}
@ -451,7 +451,7 @@ native_buf_write(clixon_handle h,
if ((len = write(rc->rc_s, buf+totlen, buflen-totlen)) < 0){
switch (errno){
case EAGAIN: /* Operation would block */
clixon_debug(CLIXON_DBG_CLIENT, "write EAGAIN");
clixon_debug(CLIXON_DBG_RESTCONF, "write EAGAIN");
usleep(10000);
continue;
break;
@ -471,7 +471,7 @@ native_buf_write(clixon_handle h,
} /* while */
retval = 1;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
closed:
retval = 0;
@ -498,7 +498,7 @@ native_send_badrequest(clixon_handle h,
int retval = -1;
cbuf *cb = NULL;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if ((cb = cbuf_new()) == NULL){
clixon_err(OE_UNIX, errno, "cbuf_new");
goto done;
@ -570,7 +570,7 @@ read_ssl(restconf_conn *rc,
if ((*np = SSL_read(rc->rc_ssl, buf, sz)) <= 0){
sslerr = SSL_get_error(rc->rc_ssl, *np);
clixon_debug(CLIXON_DBG_CLIENT, "SSL_read() n:%zd errno:%d sslerr:%d", *np, errno, sslerr);
clixon_debug(CLIXON_DBG_RESTCONF, "SSL_read() n:%zd errno:%d sslerr:%d", *np, errno, sslerr);
switch (sslerr){
case SSL_ERROR_WANT_READ: /* 2 */
/* SSL_ERROR_WANT_READ is returned when the last operation was a read operation
@ -578,7 +578,7 @@ read_ssl(restconf_conn *rc,
* That is, it can happen if restconf_socket_init() below is called
* with SOCK_NONBLOCK
*/
clixon_debug(CLIXON_DBG_CLIENT, "SSL_read SSL_ERROR_WANT_READ");
clixon_debug(CLIXON_DBG_RESTCONF, "SSL_read SSL_ERROR_WANT_READ");
usleep(1000);
*again = 1;
break;
@ -593,7 +593,7 @@ read_ssl(restconf_conn *rc,
}
retval = 0;
// done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
}
@ -623,14 +623,14 @@ read_regular(restconf_conn *rc,
if ((*np = read(rc->rc_s, buf, sz)) < 0){ /* XXX atomicio ? */
switch(errno){
case ECONNRESET:/* Connection reset by peer */
clixon_debug(CLIXON_DBG_CLIENT, "%d Connection reset by peer", rc->rc_s);
clixon_debug(CLIXON_DBG_RESTCONF, "%d Connection reset by peer", rc->rc_s);
if (restconf_close_ssl_socket(rc, __FUNCTION__, 0) < 0)
goto done;
retval = 0; /* Close socket and ssl */
goto done;
break;
case EAGAIN:
clixon_debug(CLIXON_DBG_CLIENT, "read EAGAIN");
clixon_debug(CLIXON_DBG_RESTCONF, "read EAGAIN");
usleep(1000);
*again = 1;
break;
@ -886,7 +886,7 @@ restconf_http2_process(restconf_conn *rc,
int ret;
nghttp2_error ngerr;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if (rc->rc_exit){ /* Server-initiated exit for http/2 */
if ((ngerr = nghttp2_session_terminate_session(rc->rc_ngsession, 0)) < 0){
clixon_err(OE_NGHTTP2, ngerr, "nghttp2_session_terminate_session %d", ngerr);
@ -913,7 +913,7 @@ restconf_http2_process(restconf_conn *rc,
}
retval = 1;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
}
#endif /* HAVE_LIBNGHTTP2 */
@ -961,7 +961,7 @@ restconf_connection(int s,
int readmore = 1;
int ret;
clixon_debug(CLIXON_DBG_CLIENT, "%d", s);
clixon_debug(CLIXON_DBG_RESTCONF, "%d", s);
if ((rc = (restconf_conn*)arg) == NULL){
clixon_err(OE_RESTCONF, EINVAL, "arg is NULL");
goto done;
@ -972,7 +972,7 @@ restconf_connection(int s,
}
gettimeofday(&rc->rc_t, NULL); /* activity timer */
while (readmore) {
clixon_debug(CLIXON_DBG_CLIENT, "readmore");
clixon_debug(CLIXON_DBG_RESTCONF, "readmore");
readmore = 0;
/* Example: curl -Ssik -u wilma:bar -X GET https://localhost/restconf/data/example:x */
if (rc->rc_ssl){
@ -985,11 +985,11 @@ restconf_connection(int s,
if (ret == 0)
goto ok; /* abort here */
}
clixon_debug(CLIXON_DBG_CLIENT, "read:%zd", n);
clixon_debug(CLIXON_DBG_RESTCONF, "read:%zd", n);
if (readmore)
continue;
if (n == 0){
clixon_debug(CLIXON_DBG_CLIENT, "n=0 closing socket");
clixon_debug(CLIXON_DBG_RESTCONF, "n=0 closing socket");
if (restconf_close_ssl_socket(rc, __FUNCTION__, 0) < 0)
goto done;
rc = NULL;
@ -1029,7 +1029,7 @@ restconf_connection(int s,
ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
} /* restconf_connection */
@ -1053,7 +1053,7 @@ restconf_connection_close1(restconf_conn *rc)
goto done;
}
rsock = rc->rc_socket;
clixon_debug(CLIXON_DBG_CLIENT, "\"%s\"", rsock->rs_description);
clixon_debug(CLIXON_DBG_RESTCONF, "\"%s\"", rsock->rs_description);
if (close(rc->rc_s) < 0){
clixon_err(OE_UNIX, errno, "close");
goto done;
@ -1068,7 +1068,7 @@ restconf_connection_close1(restconf_conn *rc)
}
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
}
@ -1092,13 +1092,13 @@ restconf_close_ssl_socket(restconf_conn *rc,
int sslerr;
int er;
clixon_debug(CLIXON_DBG_CLIENT, "%s", callfn);
clixon_debug(CLIXON_DBG_RESTCONF, "%s", callfn);
if (rc->rc_ssl != NULL){
if (!dontshutdown &&
(ret = SSL_shutdown(rc->rc_ssl)) < 0){
er = errno;
sslerr = SSL_get_error(rc->rc_ssl, ret);
clixon_debug(CLIXON_DBG_CLIENT, "errno:%s(%d) sslerr:%d", strerror(er), er, sslerr);
clixon_debug(CLIXON_DBG_RESTCONF, "errno:%s(%d) sslerr:%d", strerror(er), er, sslerr);
if (sslerr == SSL_ERROR_SSL || /* 1 */
sslerr == SSL_ERROR_ZERO_RETURN){ /* 6 */
}
@ -1126,7 +1126,7 @@ restconf_close_ssl_socket(restconf_conn *rc,
goto done;
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
}
@ -1150,7 +1150,7 @@ ssl_alpn_check(clixon_handle h,
int retval = -1;
cbuf *cberr = NULL;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
/* Alternatively, call restconf_str2proto but alpn is not a proper string */
if (alpn && alpnlen == 8 && memcmp("http/1.1", alpn, 8) == 0){
*proto = HTTP_11;
@ -1202,7 +1202,7 @@ ssl_alpn_check(clixon_handle h,
}
retval = 1;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
if (cberr)
cbuf_free(cberr);
return retval;
@ -1240,7 +1240,7 @@ restconf_ssl_accept_client(clixon_handle h,
unsigned int alpnlen = 0;
restconf_http_proto proto = HTTP_11; /* Non-SSL negotiation NYI */
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
#ifdef HAVE_LIBNGHTTP2
#ifndef HAVE_HTTP1
proto = HTTP_2; /* If nghttp2 only let default be 2.0 */
@ -1255,13 +1255,13 @@ restconf_ssl_accept_client(clixon_handle h,
*/
if ((rc = restconf_conn_new(h, s, rsock)) == NULL)
goto done;
clixon_debug(CLIXON_DBG_CLIENT, "s:%d", rc->rc_s);
clixon_debug(CLIXON_DBG_RESTCONF, "s:%d", rc->rc_s);
if (rsock->rs_ssl){
if ((rc->rc_ssl = SSL_new(rn->rn_ctx)) == NULL){
clixon_err(OE_SSL, 0, "SSL_new");
goto done;
}
clixon_debug(CLIXON_DBG_CLIENT, "SSL_new(%p)", rc->rc_ssl);
clixon_debug(CLIXON_DBG_RESTCONF, "SSL_new(%p)", rc->rc_ssl);
/* CCL_CTX_set_verify already set, need not call SSL_set_verify again for this server
*/
/* X509_CHECK_FLAG_NO_WILDCARDS disables wildcard expansion */
@ -1298,11 +1298,11 @@ restconf_ssl_accept_client(clixon_handle h,
* Both error cases: Call SSL_get_error() with the return value ret
*/
if ((ret = SSL_accept(rc->rc_ssl)) != 1) {
clixon_debug(CLIXON_DBG_CLIENT, "SSL_accept() ret:%d errno:%d", ret, er=errno);
clixon_debug(CLIXON_DBG_RESTCONF, "SSL_accept() ret:%d errno:%d", ret, er=errno);
e = SSL_get_error(rc->rc_ssl, ret);
switch (e){
case SSL_ERROR_SSL: /* 1 */
clixon_debug(CLIXON_DBG_CLIENT, "SSL_ERROR_SSL (non-ssl message on ssl socket)");
clixon_debug(CLIXON_DBG_RESTCONF, "SSL_ERROR_SSL (non-ssl message on ssl socket)");
#ifdef HTTP_ON_HTTPS_REPLY
SSL_free(rc->rc_ssl);
rc->rc_ssl = NULL;
@ -1320,7 +1320,7 @@ restconf_ssl_accept_client(clixon_handle h,
consult errno for details. If this error occurs then no further I/O
operations should be performed on the connection and SSL_shutdown() must
not be called.*/
clixon_debug(CLIXON_DBG_CLIENT, "SSL_accept() SSL_ERROR_SYSCALL %d", er);
clixon_debug(CLIXON_DBG_RESTCONF, "SSL_accept() SSL_ERROR_SYSCALL %d", er);
if (restconf_close_ssl_socket(rc, __FUNCTION__, 1) < 0)
goto done;
rc = NULL;
@ -1333,7 +1333,7 @@ restconf_ssl_accept_client(clixon_handle h,
* That is, it can happen if restconf_socket_init() below is called
* with SOCK_NONBLOCK
*/
clixon_debug(CLIXON_DBG_CLIENT, "write SSL_ERROR_WANT_READ");
clixon_debug(CLIXON_DBG_RESTCONF, "write SSL_ERROR_WANT_READ");
usleep(10000);
readmore = 1;
break;
@ -1367,7 +1367,7 @@ restconf_ssl_accept_client(clixon_handle h,
if (ret == 0){
goto closed;
}
clixon_debug(CLIXON_DBG_CLIENT, "proto:%s", restconf_proto2str(proto));
clixon_debug(CLIXON_DBG_RESTCONF, "proto:%s", restconf_proto2str(proto));
#if 0 /* Seems too early to fail here, instead let authentication callback deal with this */
/* For client-cert authentication, check if any certs are present,
@ -1404,7 +1404,7 @@ restconf_ssl_accept_client(clixon_handle h,
const char *peername = SSL_get0_peername(rc->rc_ssl);
if (peername != NULL) {
/* Name checks were in scope and matched the peername */
clixon_debug(CLIXON_DBG_CLIENT, "peername:%s", peername);
clixon_debug(CLIXON_DBG_RESTCONF, "peername:%s", peername);
}
}
#if 0
@ -1457,7 +1457,7 @@ restconf_ssl_accept_client(clixon_handle h,
*rcp = rc;
retval = 1; /* OK, up */
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
if (name)
free(name);
return retval;
@ -1528,7 +1528,7 @@ restconf_idle_cb(int fd,
clixon_err(OE_YANG, EINVAL, "rsock is NULL");
goto done;
}
clixon_debug(CLIXON_DBG_CLIENT, "\"%s\"", rsock->rs_description);
clixon_debug(CLIXON_DBG_RESTCONF, "\"%s\"", rsock->rs_description);
if (rc->rc_callhome && rsock->rs_periodic && rc->rc_s > 0 && rsock->rs_idle_timeout){
gettimeofday(&now, NULL);
timersub(&now, &rc->rc_t, &td); /* Last packet timestamp */
@ -1539,7 +1539,7 @@ restconf_idle_cb(int fd,
else{
to.tv_sec = rsock->rs_idle_timeout;
timeradd(&now, &to, &tn);
clixon_debug(CLIXON_DBG_CLIENT, "now:%lu timeout:%lu.%lu",
clixon_debug(CLIXON_DBG_RESTCONF, "now:%lu timeout:%lu.%lu",
now.tv_sec, tn.tv_sec, tn.tv_usec);
if (restconf_idle_timer_set(tn, rc, rsock->rs_description) < 0)
goto done;
@ -1585,7 +1585,7 @@ restconf_idle_timer(restconf_conn *rc)
clixon_err(OE_YANG, EINVAL, "rsock is NULL or not periodic");
goto done;
}
clixon_debug(CLIXON_DBG_CLIENT, "\"%s\" register", rsock->rs_description);
clixon_debug(CLIXON_DBG_RESTCONF, "\"%s\" register", rsock->rs_description);
gettimeofday(&now, NULL);
to.tv_sec = rsock->rs_idle_timeout;
timeradd(&now, &to, &t);
@ -1623,7 +1623,7 @@ restconf_callhome_cb(int fd,
clixon_err(OE_YANG, EINVAL, "rsock is NULL");
goto done;
}
clixon_debug(CLIXON_DBG_CLIENT, "\"%s\"", rsock->rs_description);
clixon_debug(CLIXON_DBG_RESTCONF, "\"%s\"", rsock->rs_description);
h = rsock->rs_h;
/* Already computed in restconf_socket_init, could be saved in rsock? */
if (clixon_inet2sin(rsock->rs_addrtype, rsock->rs_addrstr, rsock->rs_port, sa, &sa_len) < 0)
@ -1633,7 +1633,7 @@ restconf_callhome_cb(int fd,
goto done;
}
if (connect(s, sa, sa_len) < 0){
clixon_debug(CLIXON_DBG_CLIENT, "connect %hu fail:%d %s", rsock->rs_port, errno, strerror(errno));
clixon_debug(CLIXON_DBG_RESTCONF, "connect %hu fail:%d %s", rsock->rs_port, errno, strerror(errno));
close(s);
rsock->rs_attempts++;
/* Fail: Initiate new timer */
@ -1641,7 +1641,7 @@ restconf_callhome_cb(int fd,
goto done;
}
else {
clixon_debug(CLIXON_DBG_CLIENT, "connect %hu OK", rsock->rs_port);
clixon_debug(CLIXON_DBG_RESTCONF, "connect %hu OK", rsock->rs_port);
rsock->rs_attempts = 0;
if ((ret = restconf_ssl_accept_client(h, s, rsock, &rc)) < 0)
goto done;
@ -1686,7 +1686,7 @@ restconf_callhome_timer(restconf_socket *rsock,
clixon_err(OE_YANG, EINVAL, "rsock is NULL or not callhome");
goto done;
}
clixon_debug(CLIXON_DBG_CLIENT, "\"%s\"", rsock->rs_description);
clixon_debug(CLIXON_DBG_RESTCONF, "\"%s\"", rsock->rs_description);
if (!rsock->rs_callhome)
goto ok; /* shouldnt happen */
gettimeofday(&now, NULL);
@ -1714,9 +1714,9 @@ restconf_callhome_timer(restconf_socket *rsock,
}
cprintf(cb, "restconf callhome timer %s", rsock->rs_description);
if (rsock->rs_description)
clixon_debug(CLIXON_DBG_CLIENT, "registering \"%s\": +%lu", rsock->rs_description, t.tv_sec-now.tv_sec);
clixon_debug(CLIXON_DBG_RESTCONF, "registering \"%s\": +%lu", rsock->rs_description, t.tv_sec-now.tv_sec);
else
clixon_debug(CLIXON_DBG_CLIENT, "%lu", t.tv_sec);
clixon_debug(CLIXON_DBG_RESTCONF, "%lu", t.tv_sec);
/* Should be only place restconf_callhome_cb is registered */
if (clixon_event_reg_timeout(t,
restconf_callhome_cb,

View file

@ -120,7 +120,7 @@ clixon_nghttp2_log_cb(void *handle,
int suberr,
cbuf *cb)
{
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
cprintf(cb, "Fatal error: %s", nghttp2_strerror(suberr));
return 0;
}
@ -132,7 +132,7 @@ nghttp2_print_header(const uint8_t *name,
const uint8_t *value,
size_t valuelen)
{
clixon_debug(CLIXON_DBG_CLIENT, "%s %s", name, value);
clixon_debug(CLIXON_DBG_RESTCONF, "%s %s", name, value);
}
/*! Print HTTP headers to |f|.
@ -178,20 +178,20 @@ session_send_callback(nghttp2_session *session,
int s;
int sslerr;
clixon_debug(CLIXON_DBG_CLIENT, "buflen:%zu", buflen);
clixon_debug(CLIXON_DBG_RESTCONF, "buflen:%zu", buflen);
s = rc->rc_s;
while (totlen < buflen){
if (rc->rc_ssl){
if ((len = SSL_write(rc->rc_ssl, buf+totlen, buflen-totlen)) <= 0){
er = errno;
sslerr = SSL_get_error(rc->rc_ssl, len);
clixon_debug(CLIXON_DBG_CLIENT, "SSL_write: errno:%s(%d) sslerr:%d",
clixon_debug(CLIXON_DBG_RESTCONF, "SSL_write: errno:%s(%d) sslerr:%d",
strerror(er),
er,
sslerr);
switch (sslerr){
case SSL_ERROR_WANT_WRITE: /* 3 */
clixon_debug(CLIXON_DBG_CLIENT, "write SSL_ERROR_WANT_WRITE");
clixon_debug(CLIXON_DBG_RESTCONF, "write SSL_ERROR_WANT_WRITE");
usleep(1000);
continue;
break;
@ -205,7 +205,7 @@ session_send_callback(nghttp2_session *session,
* platforms, linux here, freebsd want_write, or possibly differnt
* ssl lib versions?
*/
clixon_debug(CLIXON_DBG_CLIENT, "write EAGAIN");
clixon_debug(CLIXON_DBG_RESTCONF, "write EAGAIN");
usleep(1000);
continue;
}
@ -225,7 +225,7 @@ session_send_callback(nghttp2_session *session,
else{
if ((len = write(s, buf+totlen, buflen-totlen)) < 0){
if (errno == EAGAIN){
clixon_debug(CLIXON_DBG_CLIENT, "write EAGAIN");
clixon_debug(CLIXON_DBG_RESTCONF, "write EAGAIN");
usleep(10000);
continue;
}
@ -252,10 +252,10 @@ session_send_callback(nghttp2_session *session,
retval = 0;
done:
if (retval < 0){
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
}
clixon_debug(CLIXON_DBG_CLIENT, "retval:%zd", totlen);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%zd", totlen);
return retval == 0 ? totlen : retval;
}
@ -269,7 +269,7 @@ recv_callback(nghttp2_session *session,
void *user_data)
{
// restconf_conn *rc = (restconf_conn *)user_data;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
return 0;
}
@ -294,7 +294,7 @@ restconf_nghttp2_path(restconf_stream_data *sd)
cvec *cvv = NULL;
char *cn;
clixon_debug(CLIXON_DBG_CLIENT, "------------");
clixon_debug(CLIXON_DBG_RESTCONF, "------------");
rc = sd->sd_conn;
if ((h = rc->rc_h) == NULL){
clixon_err(OE_RESTCONF, EINVAL, "arg is NULL");
@ -346,7 +346,7 @@ restconf_nghttp2_path(restconf_stream_data *sd)
goto done;
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
if (cvv)
cvec_free(cvv);
if (oneline)
@ -390,7 +390,7 @@ restconf_sd_read(nghttp2_session *session,
#endif
assert(cbuf_len(cb) > sd->sd_body_offset);
remain = cbuf_len(cb) - sd->sd_body_offset;
clixon_debug(CLIXON_DBG_CLIENT, "length:%zu totlen:%zu, offset:%zu remain:%zu",
clixon_debug(CLIXON_DBG_RESTCONF, "length:%zu totlen:%zu, offset:%zu remain:%zu",
length,
cbuf_len(cb),
sd->sd_body_offset,
@ -405,7 +405,7 @@ restconf_sd_read(nghttp2_session *session,
}
memcpy(buf, cbuf_get(cb) + sd->sd_body_offset, len);
sd->sd_body_offset += len;
clixon_debug(CLIXON_DBG_CLIENT, "retval:%zu", len);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%zu", len);
return len;
}
@ -433,7 +433,7 @@ restconf_submit_response(nghttp2_session *session,
hdr = &hdrs[i++];
hdr->name = (uint8_t*)":status";
snprintf(valstr, 15, "%u", sd->sd_code);
clixon_debug(CLIXON_DBG_CLIENT, "status %d", sd->sd_code);
clixon_debug(CLIXON_DBG_RESTCONF, "status %d", sd->sd_code);
hdr->value = (uint8_t*)valstr;
hdr->namelen = strlen(":status");
hdr->valuelen = strlen(valstr);
@ -443,7 +443,7 @@ restconf_submit_response(nghttp2_session *session,
while ((cv = cvec_each(sd->sd_outp_hdrs, cv)) != NULL){
hdr = &hdrs[i++];
hdr->name = (uint8_t*)cv_name_get(cv);
clixon_debug(CLIXON_DBG_CLIENT, "hdr: %s", hdr->name);
clixon_debug(CLIXON_DBG_RESTCONF, "hdr: %s", hdr->name);
hdr->value = (uint8_t*)cv_string_get(cv);
hdr->namelen = strlen(cv_name_get(cv));
hdr->valuelen = strlen(cv_string_get(cv));
@ -458,7 +458,7 @@ restconf_submit_response(nghttp2_session *session,
}
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
if (hdrs)
free(hdrs);
return retval;
@ -474,7 +474,7 @@ http2_exec(restconf_conn *rc,
{
int retval = -1;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if (sd->sd_path){
free(sd->sd_path);
sd->sd_path = NULL;
@ -513,7 +513,7 @@ http2_exec(restconf_conn *rc,
}
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
}
@ -529,7 +529,7 @@ on_frame_recv_callback(nghttp2_session *session,
restconf_stream_data *sd = NULL;
char *query;
clixon_debug(CLIXON_DBG_CLIENT, "%s %d",
clixon_debug(CLIXON_DBG_RESTCONF, "%s %d",
clicon_int2str(nghttp2_frame_type_map, frame->hd.type),
frame->hd.stream_id);
switch (frame->hd.type) {
@ -571,7 +571,7 @@ on_invalid_frame_recv_callback(nghttp2_session *session,
void *user_data)
{
// restconf_conn *rc = (restconf_conn *)user_data;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
return 0;
}
@ -593,7 +593,7 @@ on_data_chunk_recv_callback(nghttp2_session *session,
restconf_conn *rc = (restconf_conn *)user_data;
restconf_stream_data *sd;
clixon_debug(CLIXON_DBG_CLIENT, "%d", stream_id);
clixon_debug(CLIXON_DBG_RESTCONF, "%d", stream_id);
if ((sd = restconf_stream_find(rc, stream_id)) != NULL){
cbuf_append_buf(sd->sd_indata, (void*)data, len);
}
@ -608,7 +608,7 @@ before_frame_send_callback(nghttp2_session *session,
void *user_data)
{
// restconf_conn *rc = (restconf_conn *)user_data;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
return 0;
}
@ -620,7 +620,7 @@ on_frame_send_callback(nghttp2_session *session,
void *user_data)
{
// restconf_conn *rc = (restconf_conn *)user_data;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
return 0;
}
@ -633,7 +633,7 @@ on_frame_not_send_callback(nghttp2_session *session,
void *user_data)
{
// restconf_conn *rc = (restconf_conn *)user_data;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
return 0;
}
@ -647,7 +647,7 @@ on_stream_close_callback(nghttp2_session *session,
{
// restconf_conn *rc = (restconf_conn *)user_data;
clixon_debug(CLIXON_DBG_CLIENT, "%d %s", error_code, nghttp2_strerror(error_code));
clixon_debug(CLIXON_DBG_RESTCONF, "%d %s", error_code, nghttp2_strerror(error_code));
#if 0 // NOTNEEDED /* XXX think this is not necessary? */
if (error_code){
if (restconf_close_ssl_socket(rc, __FUNCTION__, 0) < 0)
@ -667,7 +667,7 @@ on_begin_headers_callback(nghttp2_session *session,
restconf_conn *rc = (restconf_conn *)user_data;
restconf_stream_data *sd;
clixon_debug(CLIXON_DBG_CLIENT, "%s", clicon_int2str(nghttp2_frame_type_map, frame->hd.type));
clixon_debug(CLIXON_DBG_RESTCONF, "%s", clicon_int2str(nghttp2_frame_type_map, frame->hd.type));
if (frame->hd.type == NGHTTP2_HEADERS &&
frame->headers.cat == NGHTTP2_HCAT_REQUEST) {
sd = restconf_stream_data_new(rc, frame->hd.stream_id);
@ -735,12 +735,12 @@ on_header_callback(nghttp2_session *session,
switch (frame->hd.type){
case NGHTTP2_HEADERS:
assert (frame->headers.cat == NGHTTP2_HCAT_REQUEST);
clixon_debug(CLIXON_DBG_CLIENT, "HEADERS %s %s", name, value);
clixon_debug(CLIXON_DBG_RESTCONF, "HEADERS %s %s", name, value);
if (nghttp2_hdr2clixon(rc->rc_h, (char*)name, (char*)value) < 0)
goto done;
break;
default:
clixon_debug(CLIXON_DBG_CLIENT, "%s %s", clicon_int2str(nghttp2_frame_type_map, frame->hd.type), name);
clixon_debug(CLIXON_DBG_RESTCONF, "%s %s", clicon_int2str(nghttp2_frame_type_map, frame->hd.type), name);
break;
}
retval = 0;
@ -758,7 +758,7 @@ select_padding_callback(nghttp2_session *session,
void *user_data)
{
// restconf_conn *rc = (restconf_conn *)user_data;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
return frame->hd.length;
}
@ -774,7 +774,7 @@ data_source_read_length_callback(nghttp2_session *session,
void *user_data)
{
// restconf_conn *rc = (restconf_conn *)user_data;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
return 0;
}
#endif /* NOTUSED */
@ -790,7 +790,7 @@ on_begin_frame_callback(nghttp2_session *session,
void *user_data)
{
// restconf_conn *rc = (restconf_conn *)user_data;
clixon_debug(CLIXON_DBG_CLIENT, "%s", clicon_int2str(nghttp2_frame_type_map, hd->type));
clixon_debug(CLIXON_DBG_RESTCONF, "%s", clicon_int2str(nghttp2_frame_type_map, hd->type));
if (hd->type == NGHTTP2_CONTINUATION)
assert(0);
return 0;
@ -810,7 +810,7 @@ send_data_callback(nghttp2_session *session,
void *user_data)
{
// restconf_conn *rc = (restconf_conn *)user_data;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
return 0;
}
@ -824,7 +824,7 @@ pack_extension_callback(nghttp2_session *session,
void *user_data)
{
// restconf_conn *rc = (restconf_conn *)user_data;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
return 0;
}
@ -837,7 +837,7 @@ unpack_extension_callback(nghttp2_session *session,
void *user_data)
{
// restconf_conn *rc = (restconf_conn *)user_data;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
return 0;
}
#endif /* NOTUSED */
@ -852,7 +852,7 @@ on_extension_chunk_recv_callback(nghttp2_session *session,
void *user_data)
{
// restconf_conn *rc = (restconf_conn *)user_data;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
return 0;
}
@ -865,7 +865,7 @@ error_callback(nghttp2_session *session,
void *user_data)
{
// restconf_conn *rc = (restconf_conn *)user_data;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
return 0;
}
@ -880,7 +880,7 @@ error_callback2(nghttp2_session *session,
void *user_data)
{
// restconf_conn *rc = (restconf_conn *)user_data;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
clixon_err(OE_NGHTTP2, lib_error_code, "%s", msg);
return 0;
}
@ -903,7 +903,7 @@ http2_recv(restconf_conn *rc,
int retval = -1;
nghttp2_error ngerr;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if (rc->rc_ngsession == NULL){
/* http2_session_init not called */
clixon_err(OE_RESTCONF, EINVAL, "No nghttp2 session");
@ -940,7 +940,7 @@ http2_recv(restconf_conn *rc,
}
retval = 1; /* OK */
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
fail:
retval = 0;
@ -957,7 +957,7 @@ http2_send_server_connection(restconf_conn *rc)
,{NGHTTP2_SETTINGS_ENABLE_PUSH, 0}};
nghttp2_error ngerr;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if ((ngerr = nghttp2_submit_settings(rc->rc_ngsession,
NGHTTP2_FLAG_NONE,
iv,
@ -971,7 +971,7 @@ http2_send_server_connection(restconf_conn *rc)
}
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
return retval;
}

View file

@ -116,7 +116,7 @@ api_well_known(clixon_handle h,
cbuf *cb = NULL;
int head;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if (req == NULL){
errno = EINVAL;
goto done;
@ -179,7 +179,7 @@ api_root_restconf_exact(clixon_handle h,
cbuf *cb = NULL;
int head;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
head = strcmp(request_method, "HEAD") == 0;
if (!head && strcmp(request_method, "GET") != 0){
if (restconf_method_notallowed(h, req, "GET", pretty, media_out) < 0)
@ -248,7 +248,7 @@ api_operational_state(clixon_handle h,
restconf_media media_out)
{
clixon_debug(CLIXON_DBG_CLIENT, "request method:%s", request_method);
clixon_debug(CLIXON_DBG_RESTCONF, "request method:%s", request_method);
/* We are not implementing this method at this time, 20201105 despite it
* being mandatory https://tools.ietf.org/html/rfc8527#section-3.1 */
@ -274,7 +274,7 @@ api_yang_library_version(clixon_handle h,
cbuf *cb = NULL;
yang_stmt *yspec;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if (restconf_reply_header(req, "Content-Type", "%s", restconf_media_int2str(media_out)) < 0)
goto done;
if (restconf_reply_header(req, "Cache-Control", "no-cache") < 0)
@ -349,9 +349,9 @@ api_data(clixon_handle h,
char *request_method;
cxobj *xerr = NULL;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
request_method = restconf_param_get(h, "REQUEST_METHOD");
clixon_debug(CLIXON_DBG_CLIENT, "method:%s", request_method);
clixon_debug(CLIXON_DBG_RESTCONF, "method:%s", request_method);
/* https://tools.ietf.org/html/rfc8527#section-3.2 */
/* We assume that dynamic datastores are read only at this time 20201105 */
@ -399,7 +399,7 @@ api_data(clixon_handle h,
goto done;
retval = api_return_err0(h, req, xerr, pretty, media_out, 0);
}
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
done:
if (xerr)
xml_free(xerr);
@ -435,7 +435,7 @@ api_operations(clixon_handle h,
int retval = -1;
cxobj *xerr = NULL;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if (strcmp(request_method, "GET")==0)
retval = api_operations_get(h, req, path, pi, qvec, data, pretty, media_out);
else if (strcmp(request_method, "POST")==0)
@ -482,7 +482,7 @@ api_root_restconf(clixon_handle h,
int ret;
cxobj *xerr = NULL;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_RESTCONF, "");
if (req == NULL){
errno = EINVAL;
goto done;
@ -512,7 +512,7 @@ api_root_restconf(clixon_handle h,
goto ok;
}
}
clixon_debug(CLIXON_DBG_CLIENT, "ACCEPT: %s %s", media_str, restconf_media_int2str(media_out));
clixon_debug(CLIXON_DBG_RESTCONF, "ACCEPT: %s %s", media_str, restconf_media_int2str(media_out));
if ((pvec = clicon_strsep(path, "/", &pn)) == NULL)
goto done;
@ -543,14 +543,14 @@ api_root_restconf(clixon_handle h,
goto done;
goto ok;
}
clixon_debug(CLIXON_DBG_CLIENT, "api_resource=%s", api_resource);
clixon_debug(CLIXON_DBG_RESTCONF, "api_resource=%s", api_resource);
if (uri_str2cvec(path, '/', '=', 1, &pcvec) < 0) /* rest url eg /album=ricky/foo */
goto done;
/* data */
if ((cb = restconf_get_indata(req)) == NULL) /* XXX NYI ACTUALLY not always needed, do this later? */
goto done;
indata = cbuf_get(cb);
clixon_debug(CLIXON_DBG_CLIENT, "DATA=%s", indata);
clixon_debug(CLIXON_DBG_RESTCONF, "DATA=%s", indata);
/* If present, check credentials. See "plugin_credentials" in plugin
* retvals:
@ -627,7 +627,7 @@ api_root_restconf(clixon_handle h,
ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_RESTCONF, "retval:%d", retval);
#ifdef WITH_RESTCONF_FCGI
if (cb)
cbuf_free(cb);

View file

@ -215,16 +215,16 @@ restconf_stream_cb(int s,
int pretty = 0; /* XXX should be via arg */
int ret;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_STREAM, "");
/* get msg (this is the reason this function is called) */
if (clicon_msg_rcv(s, NULL, 0, &reply, &eof) < 0){
clixon_debug(CLIXON_DBG_CLIENT, "msg_rcv error");
clixon_debug(CLIXON_DBG_STREAM, "msg_rcv error");
goto done;
}
clixon_debug(CLIXON_DBG_CLIENT, "msg: %s", reply?reply->op_body:"null");
clixon_debug(CLIXON_DBG_STREAM, "msg: %s", reply?reply->op_body:"null");
/* handle close from remote end: this will exit the client */
if (eof){
clixon_debug(CLIXON_DBG_CLIENT, "eof");
clixon_debug(CLIXON_DBG_STREAM, "eof");
clixon_err(OE_PROTO, ESHUTDOWN, "Socket unexpected close");
errno = ESHUTDOWN;
FCGX_FPrintF(r->out, "SHUTDOWN\r\n");
@ -266,7 +266,7 @@ restconf_stream_cb(int s,
ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval: %d", retval);
clixon_debug(CLIXON_DBG_STREAM, "retval: %d", retval);
if (xtop != NULL)
xml_free(xtop);
if (reply)
@ -306,7 +306,7 @@ restconf_stream(clixon_handle h,
cg_var *cv;
char *vname;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_STREAM, "");
*sp = -1;
if ((cb = cbuf_new()) == NULL){
clixon_err(OE_XML, errno, "cbuf_new");
@ -353,7 +353,7 @@ restconf_stream(clixon_handle h,
ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval: %d", retval);
clixon_debug(CLIXON_DBG_STREAM, "retval: %d", retval);
if (xret)
xml_free(xret);
if (cb)
@ -376,9 +376,9 @@ stream_checkuplink(int s,
{
FCGX_Request *r = (FCGX_Request *)arg;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_STREAM, "");
if (FCGX_GetError(r->out) != 0){ /* break loop */
clixon_debug(CLIXON_DBG_CLIENT, "FCGX_GetError upstream");
clixon_debug(CLIXON_DBG_STREAM, "FCGX_GetError upstream");
clixon_exit_set(1);
}
return 0;
@ -392,9 +392,9 @@ stream_timeout(int s,
struct timeval t1;
FCGX_Request *r = (FCGX_Request *)arg;
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_STREAM, "");
if (FCGX_GetError(r->out) != 0){ /* break loop */
clixon_debug(CLIXON_DBG_CLIENT, "FCGX_GetError upstream");
clixon_debug(CLIXON_DBG_STREAM, "FCGX_GetError upstream");
clixon_exit_set(1);
}
else{
@ -442,7 +442,7 @@ api_stream(clixon_handle h,
struct stream_child *sc;
#endif
clixon_debug(CLIXON_DBG_CLIENT, "");
clixon_debug(CLIXON_DBG_STREAM, "");
streampath = clicon_option_str(h, "CLICON_STREAM_PATH");
if ((path = restconf_uripath(h)) == NULL)
goto done;
@ -478,7 +478,7 @@ api_stream(clixon_handle h,
goto done;
goto ok;
}
clixon_debug(CLIXON_DBG_CLIENT, "method=%s", method);
clixon_debug(CLIXON_DBG_STREAM, "method=%s", method);
if (uri_str2cvec(path, '/', '=', 1, &pcvec) < 0) /* rest url eg /album=ricky/foo */
goto done;
@ -486,7 +486,7 @@ api_stream(clixon_handle h,
if ((cb = restconf_get_indata(req)) == NULL)
goto done;
indata = cbuf_get(cb);
clixon_debug(CLIXON_DBG_CLIENT, "DATA=%s", indata);
clixon_debug(CLIXON_DBG_STREAM, "DATA=%s", indata);
/* If present, check credentials. See "plugin_credentials" in plugin
* See RFC 8040 section 2.5
@ -522,12 +522,12 @@ api_stream(clixon_handle h,
req,
"stream socket") < 0)
goto done;
clixon_debug(CLIXON_DBG_CLIENT, "before loop");
clixon_debug(CLIXON_DBG_STREAM, "before loop");
/* Poll upstream errors */
stream_timeout(0, req);
/* Start loop */
clixon_event_loop(h);
clixon_debug(CLIXON_DBG_CLIENT, "after loop");
clixon_debug(CLIXON_DBG_STREAM, "after loop");
clicon_rpc_close_session(h);
clixon_event_unreg_fd(s, restconf_stream_cb);
close(s);
@ -562,7 +562,7 @@ api_stream(clixon_handle h,
ok:
retval = 0;
done:
clixon_debug(CLIXON_DBG_CLIENT, "retval:%d", retval);
clixon_debug(CLIXON_DBG_STREAM, "retval:%d", retval);
if (xerr)
xml_free(xerr);
if (pvec)