SNMP frontend, forgot add some files in last commit

This commit is contained in:
Olof hagsand 2022-05-28 15:37:44 +02:00
parent 18ff854e12
commit b3a6700fd5
4 changed files with 10 additions and 8 deletions

View file

@ -253,7 +253,7 @@ snmp_scalar_get(clicon_handle h,
netsnmp_set_request_error(reqinfo, requests, SNMP_NOSUCHINSTANCE); netsnmp_set_request_error(reqinfo, requests, SNMP_NOSUCHINSTANCE);
goto ok; goto ok;
} }
if (type_yang2asn1(ys, &asn1type) < 0) if (type_yang2asn1(ys, &asn1type, 1) < 0)
goto done; goto done;
if ((ret = type_snmpstr2val(snmpstr, &asn1type, &snmpval, &snmplen, &reason)) < 0) if ((ret = type_snmpstr2val(snmpstr, &asn1type, &snmpval, &snmplen, &reason)) < 0)
goto done; goto done;
@ -383,7 +383,7 @@ clixon_snmp_scalar_handler(netsnmp_mib_handler *handler,
break; break;
case MODE_SET_RESERVE1: /* 0 */ case MODE_SET_RESERVE1: /* 0 */
/* Translate from YANG ys leaf type to SNMP asn1.1 type ids (not value), also cvtype */ /* Translate from YANG ys leaf type to SNMP asn1.1 type ids (not value), also cvtype */
if (type_yang2asn1(ys, &asn1_type) < 0) if (type_yang2asn1(ys, &asn1_type, 0) < 0)
goto done; goto done;
if (requestvb->type != asn1_type){ if (requestvb->type != asn1_type){
clicon_debug(1, "%s Expected type:%d, got: %d", __FUNCTION__, requestvb->type, asn1_type); clicon_debug(1, "%s Expected type:%d, got: %d", __FUNCTION__, requestvb->type, asn1_type);

View file

@ -154,6 +154,7 @@ snmp_handle_free(clixon_snmp_handle *sh)
* *
* @param[in] ys YANG leaf node * @param[in] ys YANG leaf node
* @param[out] asn1_type ASN.1 type id * @param[out] asn1_type ASN.1 type id
* @param[in] extended Special case clixon extended types used in xml<->asn1 data conversions
* @retval 0 OK * @retval 0 OK
* @retval -1 Error * @retval -1 Error
* @see type_yang2snmp, yang only * @see type_yang2snmp, yang only
@ -162,7 +163,8 @@ snmp_handle_free(clixon_snmp_handle *sh)
*/ */
int int
type_yang2asn1(yang_stmt *ys, type_yang2asn1(yang_stmt *ys,
int *asn1_type) int *asn1_type,
int extended)
{ {
int retval = -1; int retval = -1;
yang_stmt *yrestype; /* resolved type */ yang_stmt *yrestype; /* resolved type */
@ -201,10 +203,10 @@ type_yang2asn1(yang_stmt *ys,
else if (strcmp(origtype, "timeticks")==0){ else if (strcmp(origtype, "timeticks")==0){
at = ASN_TIMETICKS; /* Clixon extended string type */ at = ASN_TIMETICKS; /* Clixon extended string type */
} }
else if (strcmp(origtype, "phys-address")==0){ else if (extended && strcmp(origtype, "phys-address")==0){
at = CLIXON_ASN_PHYS_ADDR; /* Clixon extended string type */ at = CLIXON_ASN_PHYS_ADDR; /* Clixon extended string type */
} }
else if (strcmp(origtype, "SnmpAdminString")==0){ else if (extended && strcmp(origtype, "SnmpAdminString")==0){
at = CLIXON_ASN_ADMIN_STRING; /* cf extension display-type 255T? */ at = CLIXON_ASN_ADMIN_STRING; /* cf extension display-type 255T? */
} }

View file

@ -61,7 +61,7 @@ typedef struct clixon_snmp_handle clixon_snmp_handle;
int snmp_access_str2int(char *modes_str); int snmp_access_str2int(char *modes_str);
const char *snmp_msg_int2str(int msg); const char *snmp_msg_int2str(int msg);
int snmp_handle_free(clixon_snmp_handle *sh); int snmp_handle_free(clixon_snmp_handle *sh);
int type_yang2asn1(yang_stmt *ys, int *asn1_type); int type_yang2asn1(yang_stmt *ys, int *asn1_type, int extended);
int type_snmp2xml(yang_stmt *ys, int type_snmp2xml(yang_stmt *ys,
netsnmp_variable_list *requestvb, netsnmp_variable_list *requestvb,
netsnmp_agent_request_info *reqinfo, netsnmp_agent_request_info *reqinfo,

View file

@ -136,7 +136,7 @@ mib_yang_leaf(clicon_handle h,
if (yang_extension_value(ys, "max-access", IETF_YANG_SMIV2_NS, NULL, &modes_str) < 0) if (yang_extension_value(ys, "max-access", IETF_YANG_SMIV2_NS, NULL, &modes_str) < 0)
goto done; goto done;
/* Sanity check of types */ /* Sanity check of types */
if (type_yang2asn1(ys, NULL) < 0) if (type_yang2asn1(ys, NULL, 0) < 0)
goto done; goto done;
/* Get modes (access) read-only, read-write, not-accessible, accessible-for-notify /* Get modes (access) read-only, read-write, not-accessible, accessible-for-notify
@ -292,7 +292,7 @@ mib_yang_table(clicon_handle h,
yang_argument_get(ylist), keyname); yang_argument_get(ylist), keyname);
goto done; goto done;
} }
if (type_yang2asn1(yleaf, &asn1type) < 0) if (type_yang2asn1(yleaf, &asn1type, 0) < 0)
// goto done; // goto done;
goto ok; // XXX skip goto ok; // XXX skip
if (snmp_varlist_add_variable(&table_info->indexes, if (snmp_varlist_add_variable(&table_info->indexes,