[Code formatting: Change indentation style to space](https://github.com/clicon/clixon/issues/379)

* Applies to all c/h/y/l/sh files and .editorconfig
This commit is contained in:
Olof hagsand 2022-10-27 14:21:17 +02:00
parent a9d1ab006c
commit d84c529ff1
376 changed files with 38147 additions and 38133 deletions

View file

@ -38,7 +38,7 @@
* smiv2:oid "1.3.6.1.4.1.8072.2.1.1";
* smiv2:defval "42"; (not always)
* 2. container, list
* smiv2:oid "1.3.6.1.4.1.8072.2.1";
* smiv2:oid "1.3.6.1.4.1.8072.2.1";
* 3. module level
* smiv2:alias "netSnmpExamples" {
* smiv2:oid "1.3.6.1.4.1.8072.2";
@ -96,10 +96,10 @@
*/
static int
mibyang_leaf_register(clicon_handle h,
yang_stmt *ys,
cvec *cvk_val,
oid *oidk,
size_t oidklen)
yang_stmt *ys,
cvec *cvk_val,
oid *oidk,
size_t oidklen)
{
int retval = -1;
netsnmp_handler_registration *nhreg = NULL;
@ -115,40 +115,40 @@ mibyang_leaf_register(clicon_handle h,
cbuf *cboid = NULL;
if ((cboid = cbuf_new()) == NULL){
clicon_err(OE_UNIX, errno, "cbuf_new");
goto done;
clicon_err(OE_UNIX, errno, "cbuf_new");
goto done;
}
if ((ret = yangext_oid_get(ys, oid1, &oid1len, NULL)) < 0)
goto done;
goto done;
if (ret == 0)
goto ok;
goto ok;
if (oid_append(oid1, &oid1len, oidk, oidklen) < 0)
goto done;
goto done;
/* Check if already registered */
if (clixon_snmp_api_oid_find(oid1, oid1len) == 1)
goto ok;
goto ok;
if (yang_extension_value(ys, "max-access", IETF_YANG_SMIV2_NS, NULL, &modes_str) < 0)
goto done;
goto done;
/* Only for sanity check of types initially to fail early */
if (type_yang2asn1(ys, NULL, 0) < 0)
goto done;
goto done;
/* Get modes (access) read-only, read-write, not-accessible, accessible-for-notify
*/
if (modes_str == NULL)
goto ok;
goto ok;
modes = snmp_access_str2int(modes_str);
/* SMI default value, How is this different from yang defaults?
*/
if (yang_extension_value(ys, "defval", IETF_YANG_SMIV2_NS, NULL, &default_str) < 0)
goto done;
goto done;
name = yang_argument_get(ys);
/* Stateless function, just returns ptr */
if ((handler = netsnmp_create_handler(name, clixon_snmp_scalar_handler)) == NULL){
clicon_err(OE_XML, errno, "netsnmp_create_handler");
goto done;
clicon_err(OE_XML, errno, "netsnmp_create_handler");
goto done;
}
/* Userdata to pass around in netsmp callbacks
@ -165,17 +165,17 @@ mibyang_leaf_register(clicon_handle h,
sh->sh_oidlen = oid1len;
sh->sh_default = default_str;
if (cvk_val &&
(sh->sh_cvk_orig = cvec_dup(cvk_val)) == NULL){
clicon_err(OE_UNIX, errno, "cvec_dup");
goto done;
(sh->sh_cvk_orig = cvec_dup(cvk_val)) == NULL){
clicon_err(OE_UNIX, errno, "cvec_dup");
goto done;
}
/* Stateless function, just returns ptr */
if ((nhreg = netsnmp_handler_registration_create(name, handler,
oid1, oid1len,
modes)) == NULL){
clicon_err(OE_XML, errno, "netsnmp_handler_registration_create");
netsnmp_handler_free(handler);
goto done;
oid1, oid1len,
modes)) == NULL){
clicon_err(OE_XML, errno, "netsnmp_handler_registration_create");
netsnmp_handler_free(handler);
goto done;
}
/* Register our application data and how to free it */
handler->myvoid = (void*)sh;
@ -186,9 +186,9 @@ mibyang_leaf_register(clicon_handle h,
* XXX: nhreg->agent_data
*/
if ((ret = netsnmp_register_instance(nhreg)) != SNMPERR_SUCCESS){
/* Note MIB_ errors, not regular SNMPERR_ */
clicon_err(OE_SNMP, ret-CLIXON_ERR_SNMP_MIB, "netsnmp_register_instance");
goto done;
/* Note MIB_ errors, not regular SNMPERR_ */
clicon_err(OE_SNMP, ret-CLIXON_ERR_SNMP_MIB, "netsnmp_register_instance");
goto done;
}
oid_cbuf(cboid, oid1, oid1len);
clicon_debug(1, "%s register: %s %s", __FUNCTION__, name, cbuf_get(cboid));
@ -196,7 +196,7 @@ mibyang_leaf_register(clicon_handle h,
retval = 0;
done:
if (cboid)
cbuf_free(cboid);
cbuf_free(cboid);
return retval;
}
@ -218,12 +218,12 @@ mibyang_leaf_register(clicon_handle h,
*/
static int
mibyang_table_register(clicon_handle h,
yang_stmt *ylist,
oid *oid1,
size_t oid1len,
oid *oid2,
size_t oid2len,
char *oidstr)
yang_stmt *ylist,
oid *oid1,
size_t oid1len,
oid *oid2,
size_t oid2len,
char *oidstr)
{
int retval = -1;
netsnmp_handler_registration *nhreg;
@ -240,9 +240,9 @@ mibyang_table_register(clicon_handle h,
char *name;
if ((ys = yang_parent_get(ylist)) == NULL ||
yang_keyword_get(ys) != Y_CONTAINER){
clicon_err(OE_YANG, EINVAL, "ylist parent is not list");
goto done;
yang_keyword_get(ys) != Y_CONTAINER){
clicon_err(OE_YANG, EINVAL, "ylist parent is not list");
goto done;
}
/* Note: This is wrong for augmented nodes where name is the original list, not the
* augmented. For example, for IFMIB you get ifTable twice where you should get ifTable for
@ -266,15 +266,15 @@ mibyang_table_register(clicon_handle h,
sh->sh_oid2len = oid2len;
if ((handler = netsnmp_create_handler(name, clixon_snmp_table_handler)) == NULL){
clicon_err(OE_XML, errno, "netsnmp_create_handler");
goto done;
clicon_err(OE_XML, errno, "netsnmp_create_handler");
goto done;
}
if ((nhreg = netsnmp_handler_registration_create(name, handler,
oid1, oid1len,
HANDLER_CAN_RWRITE)) == NULL){
clicon_err(OE_XML, errno, "netsnmp_handler_registration_create");
netsnmp_handler_free(handler);
goto done;
oid1, oid1len,
HANDLER_CAN_RWRITE)) == NULL){
clicon_err(OE_XML, errno, "netsnmp_handler_registration_create");
netsnmp_handler_free(handler);
goto done;
}
/* Register our application data and how to free it */
handler->myvoid =(void*)sh;
@ -283,35 +283,35 @@ mibyang_table_register(clicon_handle h,
/* See netsnmp_register_table_data_set */
if ((table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info)) == NULL){
clicon_err(OE_UNIX, errno, "SNMP_MALLOC_TYPEDEF");
goto done;
clicon_err(OE_UNIX, errno, "SNMP_MALLOC_TYPEDEF");
goto done;
}
/* Keys, go through keys */
if ((cvk = yang_cvec_get(ylist)) == NULL){
clicon_err(OE_YANG, 0, "No keys");
goto done;
clicon_err(OE_YANG, 0, "No keys");
goto done;
}
cvi = NULL;
/* Iterate over individual keys */
while ((cvi = cvec_each(cvk, cvi)) != NULL) {
keyname = cv_string_get(cvi);
if ((yleaf = yang_find(ylist, Y_LEAF, keyname)) == NULL){
clicon_err(OE_XML, 0, "List statement \"%s\" has no key leaf \"%s\"",
yang_argument_get(ylist), keyname);
goto done;
}
if (type_yang2asn1(yleaf, &asn1type, 0) < 0)
// goto done;
goto ok; // XXX skip
if (snmp_varlist_add_variable(&table_info->indexes,
NULL, // oid name
0, // oid len
asn1type,
NULL, // value
0) == NULL){
clicon_err(OE_XML, errno, "snmp_varlist_add_variable");
goto done;
}
keyname = cv_string_get(cvi);
if ((yleaf = yang_find(ylist, Y_LEAF, keyname)) == NULL){
clicon_err(OE_XML, 0, "List statement \"%s\" has no key leaf \"%s\"",
yang_argument_get(ylist), keyname);
goto done;
}
if (type_yang2asn1(yleaf, &asn1type, 0) < 0)
// goto done;
goto ok; // XXX skip
if (snmp_varlist_add_variable(&table_info->indexes,
NULL, // oid name
0, // oid len
asn1type,
NULL, // value
0) == NULL){
clicon_err(OE_XML, errno, "snmp_varlist_add_variable");
goto done;
}
}
table_info->min_column = 1;
@ -319,12 +319,12 @@ mibyang_table_register(clicon_handle h,
yleaf = NULL;
table_info->max_column = 0;
while ((yleaf = yn_each(ylist, yleaf)) != NULL) {
if (yang_keyword_get(yleaf) == Y_LEAF)
table_info->max_column++;
if (yang_keyword_get(yleaf) == Y_LEAF)
table_info->max_column++;
}
if ((ret = netsnmp_register_table(nhreg, table_info)) != SNMPERR_SUCCESS){
clicon_err(OE_SNMP, ret, "netsnmp_register_table");
goto done;
clicon_err(OE_SNMP, ret, "netsnmp_register_table");
goto done;
}
sh->sh_table_info = table_info; /* Keep to free at exit */
clicon_debug(1, "%s register: %s %s", __FUNCTION__, name, oidstr);
@ -351,7 +351,7 @@ mibyang_table_register(clicon_handle h,
*/
static int
mibyang_list_register(clicon_handle h,
yang_stmt *ylist)
yang_stmt *ylist)
{
int retval = -1;
yang_stmt *yc;
@ -363,23 +363,23 @@ mibyang_list_register(clicon_handle h,
int ret;
if ((yc = yang_parent_get(ylist)) == NULL ||
yang_keyword_get(yc) != Y_CONTAINER){
clicon_err(OE_YANG, EINVAL, "ylist parent is not container");
goto done;
yang_keyword_get(yc) != Y_CONTAINER){
clicon_err(OE_YANG, EINVAL, "ylist parent is not container");
goto done;
}
if ((ret = yangext_oid_get(ylist, oid2, &oid2len, NULL)) < 0)
goto done;
goto done;
if (ret == 0)
goto ok;
goto ok;
if ((ret = yangext_oid_get(yc, oid1, &oid1len, &oidstr)) < 0)
goto done;
goto done;
if (ret == 0)
goto ok;
goto ok;
if (mibyang_table_register(h, ylist,
oid1, oid1len,
oid2, oid2len,
oidstr) < 0)
goto done;
oid1, oid1len,
oid2, oid2len,
oidstr) < 0)
goto done;
ok:
retval = 0;
done:
@ -406,7 +406,7 @@ mibyang_list_register(clicon_handle h,
*/
static int
mibyang_augment_register(clicon_handle h,
yang_stmt *yaug)
yang_stmt *yaug)
{
int retval = -1;
char *schema_nodeid;
@ -420,25 +420,25 @@ mibyang_augment_register(clicon_handle h,
char *ri;
if ((ret = yangext_oid_get(yaug, oid2, &oid2len, &oidstr)) < 0)
goto done;
goto done;
if (ret == 0)
goto ok;
goto ok;
/* Decrement oid of list object (oid2) to container object (oid1) */
memcpy(oid1, oid2, sizeof(oid2));
oid1len = oid2len - 1;
oid1[oid1len] = 0;
if ((ri = rindex(oidstr, '.')) != NULL)
*ri = '\0';
*ri = '\0';
schema_nodeid = yang_argument_get(yaug);
if (yang_abs_schema_nodeid(yaug, schema_nodeid, &ylist) < 0)
goto done;
goto done;
if (yang_keyword_get(ylist) != Y_LIST)
goto ok; /* skip */
goto ok; /* skip */
if (mibyang_table_register(h, ylist,
oid1, oid1len,
oid2, oid2len,
oidstr) < 0)
goto done;
oid1, oid1len,
oid2, oid2len,
oidstr) < 0)
goto done;
ok:
retval = 0;
done:
@ -459,7 +459,7 @@ mibyang_augment_register(clicon_handle h,
*/
int
mibyang_table_poll(clicon_handle h,
yang_stmt *ylist)
yang_stmt *ylist)
{
int retval = -1;
cvec *nsc = NULL;
@ -479,9 +479,9 @@ mibyang_table_poll(clicon_handle h,
clicon_debug(1, "%s", __FUNCTION__);
if ((ys = yang_parent_get(ylist)) == NULL ||
yang_keyword_get(ys) != Y_CONTAINER){
clicon_err(OE_YANG, EINVAL, "ylist parent is not list");
goto done;
yang_keyword_get(ys) != Y_CONTAINER){
clicon_err(OE_YANG, EINVAL, "ylist parent is not list");
goto done;
}
if (xml_nsctx_yang(ys, &nsc) < 0)
goto done;
@ -494,30 +494,30 @@ mibyang_table_poll(clicon_handle h,
goto done;
}
if ((xtable = xpath_first(xt, nsc, "%s", xpath)) != NULL) {
/* Make a clone of key-list, but replace names with values */
if ((cvk_name = yang_cvec_get(ylist)) == NULL){
clicon_err(OE_YANG, 0, "No keys");
goto done;
}
xrow = NULL;
while ((xrow = xml_child_each(xtable, xrow, CX_ELMNT)) != NULL) {
if ((ret = snmp_xmlkey2val_oid(xrow, cvk_name, &cvk_val, oidk, &oidklen)) < 0)
goto done;
if (ret == 0)
continue; /* skip row, not all indexes */
xcol = NULL;
while ((xcol = xml_child_each(xrow, xcol, CX_ELMNT)) != NULL) {
if ((y = xml_spec(xcol)) == NULL)
continue;
if (mibyang_leaf_register(h, y, cvk_val, oidk, oidklen) < 0)
goto done;
}
}
/* Make a clone of key-list, but replace names with values */
if ((cvk_name = yang_cvec_get(ylist)) == NULL){
clicon_err(OE_YANG, 0, "No keys");
goto done;
}
xrow = NULL;
while ((xrow = xml_child_each(xtable, xrow, CX_ELMNT)) != NULL) {
if ((ret = snmp_xmlkey2val_oid(xrow, cvk_name, &cvk_val, oidk, &oidklen)) < 0)
goto done;
if (ret == 0)
continue; /* skip row, not all indexes */
xcol = NULL;
while ((xcol = xml_child_each(xrow, xcol, CX_ELMNT)) != NULL) {
if ((y = xml_spec(xcol)) == NULL)
continue;
if (mibyang_leaf_register(h, y, cvk_val, oidk, oidklen) < 0)
goto done;
}
}
}
retval = 0;
done:
if (xpath)
free(xpath);
free(xpath);
if (cvk_val)
cvec_free(cvk_val);
if (xt)
@ -537,7 +537,7 @@ mibyang_table_poll(clicon_handle h,
* smiv2:oid "1.3.6.1.4.1.8072.2.1.1";
* smiv2:defval "42"; (not always)
* 2. container, list
* smiv2:oid "1.3.6.1.4.1.8072.2.1";
* smiv2:oid "1.3.6.1.4.1.8072.2.1";
* 3. module level
* smiv2:alias "netSnmpExamples" {
* smiv2:oid "1.3.6.1.4.1.8072.2";
@ -550,51 +550,51 @@ mibyang_table_poll(clicon_handle h,
*/
static int
mibyang_traverse(clicon_handle h,
yang_stmt *yn)
yang_stmt *yn)
{
int retval = -1;
yang_stmt *ys = NULL;
yang_stmt *yp;
int ret;
clicon_debug(1, "%s %s", __FUNCTION__, yang_argument_get(yn));
switch(yang_keyword_get(yn)){
case Y_AUGMENT:
if (mibyang_augment_register(h, yn) < 0)
goto done;
goto ok;
break;
if (mibyang_augment_register(h, yn) < 0)
goto done;
goto ok;
break;
case Y_LEAF:
if (mibyang_leaf_register(h, yn, NULL, NULL, 0) < 0)
goto done;
break;
if (mibyang_leaf_register(h, yn, NULL, NULL, 0) < 0)
goto done;
break;
case Y_CONTAINER: /* See list case */
break;
break;
case Y_LIST: /* If parent is container -> identify as table */
yp = yang_parent_get(yn);
if (yang_keyword_get(yp) == Y_CONTAINER){
yp = yang_parent_get(yn);
if (yang_keyword_get(yp) == Y_CONTAINER){
/* Register table entry handler itself (not column/row leafs) */
if (mibyang_list_register(h, yn) < 0)
goto done;
goto ok;
}
break;
/* Register table entry handler itself (not column/row leafs) */
if (mibyang_list_register(h, yn) < 0)
goto done;
goto ok;
}
break;
default:
break;
break;
}
/* Traverse data nodes in tree (module is special case */
ys = NULL;
while ((ys = yn_each(yn, ys)) != NULL) {
/* augment special case of table */
if (!yang_schemanode(ys) && yang_keyword_get(ys) != Y_AUGMENT)
continue;
if ((ret = mibyang_traverse(h, ys)) < 0)
goto done;
if (ret > 0){
retval = ret;
goto done;
}
/* augment special case of table */
if (!yang_schemanode(ys) && yang_keyword_get(ys) != Y_AUGMENT)
continue;
if ((ret = mibyang_traverse(h, ys)) < 0)
goto done;
if (ret > 0){
retval = ret;
goto done;
}
}
ok:
retval = 0;
@ -618,32 +618,32 @@ clixon_snmp_traverse_mibyangs(clicon_handle h)
yang_stmt *ymod;
if ((yspec = clicon_dbspec_yang(h)) == NULL){
clicon_err(OE_FATAL, 0, "No DB_SPEC");
goto done;
clicon_err(OE_FATAL, 0, "No DB_SPEC");
goto done;
}
/* Loop over clixon configuration file to find all CLICON_SNMP_MIB, and
* then loop over all those MIBs to register OIDs with netsnmp
*/
x = NULL;
while ((x = xml_child_each(clicon_conf_xml(h), x, CX_ELMNT)) != NULL) {
if (strcmp(xml_name(x), "CLICON_SNMP_MIB") != 0)
continue;
if ((modname = xml_body(x)) == NULL)
continue;
clicon_debug(1, "%s %s: \"%s\"", __FUNCTION__, xml_name(x), modname);
/* Note, here we assume the Yang is loaded by some other mechanism and
* error if it not found.
* Alternatively, that YANG could be loaded.
* Problem is, if clixon_snmp has not loaded it, has backend done it?
* What happens if backend has not loaded it?
*/
if ((ymod = yang_find(yspec, Y_MODULE, modname)) == NULL){
clicon_err(OE_YANG, 0, "Mib-translated-yang %s not loaded", modname);
goto done;
}
/* Recursively traverse the mib-yang to find extensions */
if (mibyang_traverse(h, ymod) < 0)
goto done;
if (strcmp(xml_name(x), "CLICON_SNMP_MIB") != 0)
continue;
if ((modname = xml_body(x)) == NULL)
continue;
clicon_debug(1, "%s %s: \"%s\"", __FUNCTION__, xml_name(x), modname);
/* Note, here we assume the Yang is loaded by some other mechanism and
* error if it not found.
* Alternatively, that YANG could be loaded.
* Problem is, if clixon_snmp has not loaded it, has backend done it?
* What happens if backend has not loaded it?
*/
if ((ymod = yang_find(yspec, Y_MODULE, modname)) == NULL){
clicon_err(OE_YANG, 0, "Mib-translated-yang %s not loaded", modname);
goto done;
}
/* Recursively traverse the mib-yang to find extensions */
if (mibyang_traverse(h, ymod) < 0)
goto done;
}
retval = 0;
done: