Date: Sun, 3 Aug 2014 13:50:05 GMT From: shonali@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r271793 - soc2014/shonali/head/usr.sbin/bsnmpd/tools/libbsnmptools Message-ID: <201408031350.s73Do5LR060761@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: shonali Date: Sun Aug 3 13:50:05 2014 New Revision: 271793 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=271793 Log: Added separate calls for ipv6 in bsnmptools.c Modified: soc2014/shonali/head/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmptools.c Modified: soc2014/shonali/head/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmptools.c ============================================================================== --- soc2014/shonali/head/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmptools.c Sun Aug 3 12:19:45 2014 (r271792) +++ soc2014/shonali/head/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmptools.c Sun Aug 3 13:50:05 2014 (r271793) @@ -1092,43 +1092,46 @@ static char * snmp_ip2asn_oid(char *str, struct asn_oid *oid) { - uint32_t v; - int32_t i; - char *endptr, *ptr; + uint32_t v; + int32_t i; + char *endptr, *ptr; + + ptr = str; + + for (i = 0; i < 4; i++) { + v = strtoul(ptr, &endptr, 10); + if (v > 0xff) + return (NULL); + if (*endptr != '.' && strchr("],\0", *endptr) == NULL && i != 3) + return (NULL); + if (snmp_suboid_append(oid, (asn_subid_t) v) < 0) + return (NULL); + ptr = endptr + 1; + } + return (endptr); +} - ptr = str; - - switch (sizeof(*str)) { +static char * +snmp_ipv62asn_oid(char *str, struct asn_oid *oid) +{ + uint32_t v; + int32_t i; + char *endptr, *ptr; - case 4: - for (i = 0; i < 4; i++) { - v = strtoul(ptr, &endptr, 10); - if (v > 0xff) - return (NULL); - if (*endptr != '.' && strchr("],\0", *endptr) == NULL && i != 3) - return (NULL); - if (snmp_suboid_append(oid, (asn_subid_t) v) < 0) - return (NULL); - ptr = endptr + 1; - } - case 16: - for (i = 0; i < 16; i++) { - v = strtoul(ptr, &endptr, 16); - if (v > 0xff) - return (NULL); - if (*endptr != ':' && strchr("],\0", *endptr) == NULL && i != 15) - return (NULL); - if (snmp_suboid_append(oid, (asn_subid_t) v) < 0) - return (NULL); - ptr = endptr + 1; - } - - default: - return (NULL); - } - return (endptr); + ptr = str; + + for (i = 0; i < 16; i++) { + v = strtoul(ptr, &endptr, 16); + if (*endptr != ':' && strchr("],\0", *endptr) == NULL && i != 15) + return (NULL); + if (snmp_suboid_append(oid, (asn_subid_t) v) < 0) + return (NULL); + ptr = endptr + 1; + } + return (endptr); } + /* 32-bit counter, gauge, timeticks. */ static char * snmp_uint2asn_oid(char *str, struct asn_oid *oid) @@ -1756,18 +1759,18 @@ static void snmp_output_ipaddress(struct snmp_toolinfo *snmptoolctx, uint8_t *ip) { - if (GET_OUTPUT(snmptoolctx) == OUTPUT_VERBOSE) - fprintf(stdout, "%s : ", - syntax_strings[SNMP_SYNTAX_IPADDRESS].str); + if (GET_OUTPUT(snmptoolctx) == OUTPUT_VERBOSE) + fprintf(stdout, "%s : ", syntax_strings[SNMP_SYNTAX_IPADDRESS].str); + fprintf(stdout, "%u.%u.%u.%u", ip[0], ip[1], ip[2], ip[3]); - switch (sizeof(*ip)) { - case 4: - fprintf(stdout, "%u.%u.%u.%u", ip[0], ip[1], ip[2], ip[3]); - case 16: - fprintf(stdout, "%u.%u.%u.%u.%u.%u.%u.%u.%u.%u.%u.%u.%u.%u.%u.%u", ip[0], ip[1], ip[2], ip[3], ip[4], ip[5], ip[6], ip[7], ip[8], ip[9], ip[10], ip[11], ip[12], ip[13], ip[14], ip[15]); - default: - return (NULL); - } +} + +static void +snmp_output_ip6address(struct snmp_toolinfo *snmptoolctx, uint8_t *ip) +{ + if (GET_OUTPUT(snmptoolctx) == OUTPUT_VERBOSE) + fprintf(stdout, "%s : ", syntax_strings[SNMP_SYNTAX_IPADDRESS].str); + fprintf(stdout, "%u.%u.%u.%u.%u.%u.%u.%u.%u.%u.%u.%u.%u.%u.%u.%u", ip[0], ip[1], ip[2], ip[3], ip[4], ip[5], ip[6], ip[7], ip[8], ip[9], ip[10], ip[11], ip[12], ip[13], ip[14], ip[15]); } static void @@ -1958,16 +1961,16 @@ case SNMP_SYNTAX_IPADDRESS: if (temp.len < 4) return (-1); - - switch (sizeof(temp.len)) { + uint8_t *ip; + switch (temp.len) { case 4: - uint8_t ip[4]; - for (bytes = 0; bytes < 4; bytes++) + ip = malloc(sizeof(u_int8_t)*4); + for (bytes = 0; bytes < 4; bytes++) ip[bytes] = temp.subs[bytes]; snmp_output_ipaddress(snmptoolctx, ip); bytes = 4; case 16: - uint8_t ip[16]; + ip = malloc(sizeof(u_int8_t)*16); for (bytes = 0; bytes < 16; bytes++) ip[bytes] = temp.subs[bytes]; snmp_output_ipaddress(snmptoolctx, ip);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201408031350.s73Do5LR060761>