}
break;
case STAT_DIR_TYPE_ERROR_INDEX:
- fformat (stream, "# TYPE %s counter\n", prom_string (res[i].name));
- fformat (stream, "%s{thread=\"0\"} %lld\n",
- prom_string (res[i].name), res[i].error_value);
+ for (j = 0; j < vec_len (res[i].error_vector); j++)
+ {
+ fformat (stream, "# TYPE %s counter\n",
+ prom_string (res[i].name));
+ fformat (stream, "%s{thread=\"%d\"} %lld\n",
+ prom_string (res[i].name), j, res[i].error_vector[j]);
+ }
break;
case STAT_DIR_TYPE_SCALAR_INDEX:
res[i].scalar_value);
break;
+ case STAT_DIR_TYPE_EMPTY:
+ break;
+
default:
fformat (stderr, "Unknown value %d\n", res[i].type);
;
if (listenfd == -1)
{
perror ("Failed opening socket");
+ return -1;
}
int rv =
if (rv < 0)
{
perror ("Failed setsockopt");
+ close (listenfd);
+ return -1;
}
- memset (&serveraddr, 0, sizeof (serveraddr));
+ clib_memset (&serveraddr, 0, sizeof (serveraddr));
serveraddr.sin6_family = AF_INET6;
serveraddr.sin6_port = htons (port);
serveraddr.sin6_addr = in6addr_any;
if (bind (listenfd, (struct sockaddr *) &serveraddr, addrlen) < 0)
{
fprintf (stderr, "bind() error %s\n", strerror (errno));
+ close (listenfd);
return -1;
}
if (listen (listenfd, 1000000) != 0)
{
fprintf (stderr, "listen() error for %s\n", strerror (errno));
+ close (listenfd);
return -1;
}
return listenfd;
}
stat_segment_disconnect ();
+ close (fd);
exit (0);
}