On Mon, 2021-01-04 at 08:15 +0100, Rob Schmersel wrote: > On Sun, 03 Jan 2021 21:59:57 +0100 > Martijn van Duren <openbsd+t...@list.imperialat.at> wrote: > > > ping > > > > On Mon, 2020-12-14 at 12:13 +0100, Martijn van Duren wrote: > > > I can't find any reference in RFC2578 for a boolean type, nor have I > > > seen it in the wild and the TruthValue diff I just committed give > > > me a strong indication that this was added without any real reason. > > > > > > OK to remove? > > > > > > martijn@ > > > > > > Index: usr.bin/snmp/smi.c > > > =================================================================== > > > RCS file: /cvs/src/usr.bin/snmp/smi.c,v > > > retrieving revision 1.13 > > > diff -u -p -r1.13 smi.c > > > --- usr.bin/snmp/smi.c 14 Dec 2020 07:44:26 -0000 1.13 > > > +++ usr.bin/snmp/smi.c 14 Dec 2020 11:12:29 -0000 > > > @@ -95,9 +95,6 @@ smi_debug_elements(struct ber_element *r > > > case BER_TYPE_EOC: > > > fprintf(stderr, "end-of-content"); > > > break; > > > - case BER_TYPE_BOOLEAN: > > > - fprintf(stderr, "boolean"); > > > - break; > > > case BER_TYPE_INTEGER: > > > fprintf(stderr, "integer"); > > > break; > > > @@ -196,9 +193,6 @@ smi_debug_elements(struct ber_element *r > > > goto invalid; > > > > > > switch (root->be_encoding) { > > > - case BER_TYPE_BOOLEAN: > > > - fprintf(stderr, "%s", value); > > > - break; > > > case BER_TYPE_INTEGER: > > > case BER_TYPE_ENUMERATED: > > > fprintf(stderr, "value %s", value); > > > @@ -255,7 +249,6 @@ smi_print_element(struct ber_oid *oid, s > > > struct textconv tckey; > > > size_t len, i, slen; > > > long long v, ticks; > > > - int d; > > > int is_hex = 0, ret; > > > struct ber_oid o; > > > char strbuf[BUFSIZ]; > > > @@ -277,17 +270,6 @@ smi_print_element(struct ber_oid *oid, s > > > } > > > > > > switch (root->be_encoding) { > > > - case BER_TYPE_BOOLEAN: > > > - if (ober_get_boolean(root, &d) == -1) > > > - goto fail; > > > - if (print_hint) { > > > - if (asprintf(&str, "INTEGER: %s(%d)", > > > - d ? "true" : "false", d) == -1) > > > - goto fail; > > > - } else > > > - if (asprintf(&str, "%s", d ? "true" : > > > "false") == -1) > > > - goto fail; > > > - break; > > > case BER_TYPE_INTEGER: > > > case BER_TYPE_ENUMERATED: > > > if (ober_get_integer(root, &v) == -1) > > > Index: usr.sbin/snmpd/smi.c > > > =================================================================== > > > RCS file: /cvs/src/usr.sbin/snmpd/smi.c,v > > > retrieving revision 1.27 > > > diff -u -p -r1.27 smi.c > > > --- usr.sbin/snmpd/smi.c 24 Oct 2019 12:39:27 -0000 1.27 > > > +++ usr.sbin/snmpd/smi.c 14 Dec 2020 11:12:29 -0000 > > > @@ -317,9 +317,6 @@ smi_debug_elements(struct ber_element *r > > > case BER_TYPE_EOC: > > > fprintf(stderr, "end-of-content"); > > > break; > > > - case BER_TYPE_BOOLEAN: > > > - fprintf(stderr, "boolean"); > > > - break; > > > case BER_TYPE_INTEGER: > > > fprintf(stderr, "integer"); > > > break; > > > @@ -417,9 +414,6 @@ smi_debug_elements(struct ber_element *r > > > goto invalid; > > > > > > switch (root->be_encoding) { > > > - case BER_TYPE_BOOLEAN: > > > - fprintf(stderr, "%s", value); > > > - break; > > > case BER_TYPE_INTEGER: > > > case BER_TYPE_ENUMERATED: > > > fprintf(stderr, "value %s", value); > > > @@ -473,17 +467,10 @@ smi_print_element(struct ber_element *ro > > > char *str = NULL, *buf, *p; > > > size_t len, i; > > > long long v; > > > - int d; > > > struct ber_oid o; > > > char strbuf[BUFSIZ]; > > > > > > switch (root->be_encoding) { > > > - case BER_TYPE_BOOLEAN: > > > - if (ober_get_boolean(root, &d) == -1) > > > - goto fail; > > > - if (asprintf(&str, "%s(%d)", d ? "true" : "false", > > > d) == -1) > > > - goto fail; > > > - break; > > > case BER_TYPE_INTEGER: > > > case BER_TYPE_ENUMERATED: > > > if (ober_get_integer(root, &v) == -1) > > > > > > > > > > > > As an old telecom engineer, I can say that Boolean is a > defined ASN.1 type and supported in BER (see X.690 section 8.2, > https://www.itu.int/rec/T-REC-X.690-201508-I/en) and it is used a lot in > *telecom* standards :) > Thanks for the feedback, it's always nice to get some background information on old standards. However, this change is specifically for SNMP, which does not use this part of BER/ASN1 as far as I could find. I'm not going to remove it from ber.c and someone(tm) should look at the LDAP spec to see if it's actually prescribed there.
martijn@