append_pos += strlen(append_pos);
}
- snprintf(append_pos, buffer_size, "%d,%d,%d,%d",
- mpls->label, mpls->traffic_class,
- mpls->bottom_of_stack, mpls->ttl);
+ snprintf(append_pos, buffer_size, "%u,%u,%u,%u",
+ (unsigned int) mpls->label,
+ (unsigned int) mpls->traffic_class,
+ (unsigned int) mpls->bottom_of_stack,
+ (unsigned int) mpls->ttl);
buffer_size -= strlen(append_pos);
append_pos += strlen(append_pos);
}
snprintf(response, COMMAND_BUFFER_SIZE,
- "%d %s %s %s round-trip-time %d",
+ "%d %s %s %s round-trip-time %u",
probe->token, result, ip_argument, ip_text, round_trip_us);
if (mpls_count) {
const struct sockaddr_storage *destaddr)
{
int sock;
- int len;
+ socklen_t len;
struct sockaddr_storage dest_with_port;
#ifdef __linux__
// The Linux code needs these.
char packet[PACKET_BUFFER_SIZE];
struct probe_t *probe;
int trytimes;
- int packet_size;
+ int packet_size = 0;
probe = alloc_probe(net_state, param->command_token);
if (probe == NULL) {
packet, packet_length, ×tamp);
} else if (icmp_hostunreach_received) {
/* handle packet based on send socket protocol */
- int proto, length = sizeof(int);
+ int proto;
+ socklen_t length = sizeof(proto);
if (getsockopt(socket, SOL_SOCKET, SO_PROTOCOL, &proto, &length) < 0) {
error(EXIT_FAILURE, errno, "getsockopt SO_PROTOCOL error");
int probe_socket;
struct timeval zero_time;
int err;
- int err_length = sizeof(int);
+ socklen_t err_length = sizeof(err);
fd_set write_set;
probe_socket = probe->platform.socket;
if ( ((struct sockaddr *)(x))->sa_family == AF_INET )
{
- return ((void *)(x) + offsetof(struct sockaddr_in, sin_addr));
+ return (void *) ((const char *)(x) +
+ offsetof(struct sockaddr_in, sin_addr));
} else
if ( ((struct sockaddr *)(x))->sa_family == AF_INET6 )
{
- return ((void *)(x) + offsetof(struct sockaddr_in6, sin6_addr));
+ return (void *) ((const char *)(x) +
+ offsetof(struct sockaddr_in6, sin6_addr));
}
return NULL;
if ( ((struct sockaddr *)(x))->sa_family == AF_INET )
{
- return ((void *)(x) + offsetof(struct sockaddr_in, sin_port));
+ return (in_port_t *) ((const char *)(x) +
+ offsetof(struct sockaddr_in, sin_port));
} else
if ( ((struct sockaddr *)(x))->sa_family == AF_INET6 )
{
- return ((void *)(x) + offsetof(struct sockaddr_in6, sin6_port));
+ return (in_port_t *) ((const char *)(x) +
+ offsetof(struct sockaddr_in6, sin6_port));
}
return NULL;
ENTRY *found_item;
DEB_syslog(LOG_INFO, ">> Search: %s", key);
- item.key = key;;
+ item.key = key;
+ item.data = NULL;
if ((found_item = hsearch(item, FIND))) {
if (!(val = (*((items_t *) found_item->data))[ctl->ipinfo_no]))
val = (*((items_t *) found_item->data))[0];
close(i);
}
infp = fdopen(todns[0], "r");
+ if (!infp) {
+ error(EXIT_FAILURE, errno, "fdopen DNS lookup pipe");
+ }
while (fgets(buf, sizeof(buf), infp)) {
ip_t host;
struct dns_results *r;
while (fgets(buf, sizeof(buf), fromdnsfp)) {
- sscanf(buf, "%s %s", host, name);
+ if (sscanf(buf, "%1024s %1024s", host, name) != 2) {
+ error(0, 0, "dns_ack: malformed DNS lookup result");
+ continue;
+ }
longipstr(host, &hostip, ctl->af);
r = findip(ctl, &hostip);
FILE *in;
char line[512];
+ int close_input;
+ int read_error;
+ int read_errno;
if (!filename || strcmp(filename, "-") == 0) {
clearerr(stdin);
in = stdin;
+ close_input = 0;
} else {
in = fopen(filename, "r");
if (!in) {
error(EXIT_FAILURE, errno, "open %s", filename);
}
+ close_input = 1;
}
while (fgets(line, sizeof(line), in)) {
append_to_names(names, name);
}
- if (ferror(in)) {
- error(EXIT_FAILURE, errno, "ferror %s", filename);
+ read_error = ferror(in);
+ read_errno = errno;
+
+ if (close_input && fclose(in)) {
+ error(EXIT_FAILURE, errno, "close %s", filename);
}
- if (in != stdin)
- fclose(in);
+ if (read_error) {
+ error(EXIT_FAILURE, read_errno, "ferror %s", filename);
+ }
}
/*
int k;
for (k = 0; k < mpls->labels; k++)
printf("m %d %lu %u %u %u\n",
- host, mpls->label[k], mpls->tc[k], mpls->s[k], mpls->ttl[k]);
+ host, mpls->label[k], (unsigned int) mpls->tc[k],
+ (unsigned int) mpls->s[k],
+ (unsigned int) mpls->ttl[k]);
}
fflush(stdout);
for (k = 0; k < mpls->labels; k++) {
printf
(" | |+-- [MPLS: Lbl %lu TC %u S %u TTL %u]\n",
- mpls->label[k], mpls->tc[k], mpls->s[k],
- mpls->ttl[k]);
+ mpls->label[k], (unsigned int) mpls->tc[k],
+ (unsigned int) mpls->s[k],
+ (unsigned int) mpls->ttl[k]);
}
}
for (k = 0; k < mplss->labels && ctl->enablempls; k++) {
printf
(" | +-- [MPLS: Lbl %lu TC %u S %u TTL %u]\n",
- mplss->label[k], mplss->tc[k], mplss->s[k],
- mplss->ttl[k]);
+ mplss->label[k], (unsigned int) mplss->tc[k],
+ (unsigned int) mplss->s[k],
+ (unsigned int) mplss->ttl[k]);
}
} else {
printf(" | |-- %s\n", strlongip(ctl->af, addr2));
for (k = 0; k < mplss->labels && ctl->enablempls; k++) {
printf
(" | +-- [MPLS: Lbl %lu TC %u S %u TTL %u]\n",
- mplss->label[k], mplss->tc[k], mplss->s[k],
- mplss->ttl[k]);
+ mplss->label[k], (unsigned int) mplss->tc[k],
+ (unsigned int) mplss->s[k],
+ (unsigned int) mplss->ttl[k]);
}
}
#endif
int k;
for (k = 0; k < mpls->labels; k++) {
printf(" | +-- [MPLS: Lbl %lu TC %u S %u TTL %u]\n",
- mpls->label[k], mpls->tc[k], mpls->s[k],
- mpls->ttl[k]);
+ mpls->label[k], (unsigned int) mpls->tc[k],
+ (unsigned int) mpls->s[k],
+ (unsigned int) mpls->ttl[k]);
}
}
#endif
const int some_pending = (__fpending(stream) != 0);
const int prev_fail = (ferror(stream) != 0);
const int fclose_fail = (fclose(stream) != 0);
+ const int fclose_errno = fclose_fail ? errno : 0;
- if (prev_fail || (fclose_fail && (some_pending || errno != EBADF))) {
- if (!fclose_fail && !(errno == EPIPE))
+ if (prev_fail || (fclose_fail && (some_pending || fclose_errno != EBADF))) {
+ if (fclose_fail)
+ errno = fclose_errno;
+ else
errno = 0;
return EOF;
}