struct ip ip;
struct tcphdr tcp;
} ip4pkt;
-
+ int saved_errno;
/* for now, we only handle AF_INET addresses */
if (src->ip.sin_family != AF_INET || dest->ip.sin_family != AF_INET) {
ip4pkt.tcp.th_win = htons(1234);
ip4pkt.tcp.th_sum = tcp_checksum((uint16_t *)&ip4pkt.tcp, sizeof(ip4pkt.tcp), &ip4pkt.ip);
- ret = sendto(s, &ip4pkt, sizeof(ip4pkt), 0, (struct sockaddr *)dest, sizeof(*dest));
+ ret = sendto(s, &ip4pkt, sizeof(ip4pkt), 0,
+ (struct sockaddr *)dest, sizeof(*dest));
+ saved_errno = errno;
+ close(s);
if (ret != sizeof(ip4pkt)) {
- DEBUG(DEBUG_CRIT,(__location__ " failed sendto (%s)\n", strerror(errno)));
+ DEBUG(DEBUG_ERR,
+ ("Failed sendto (%s)\n", strerror(saved_errno)));
return -1;
}
struct ip6_hdr ip6;
struct tcphdr tcp;
} ip6pkt;
+ int saved_errno;
switch (src->ip.sin_family) {
case AF_INET:
ret = sendto(s, &ip4pkt, sizeof(ip4pkt), 0,
(const struct sockaddr *)&dest->ip,
sizeof(dest->ip));
+ saved_errno = errno;
close(s);
if (ret != sizeof(ip4pkt)) {
- DEBUG(DEBUG_CRIT,(__location__ " failed sendto (%s)\n", strerror(errno)));
+ DEBUG(DEBUG_ERR,
+ ("Failed sendto (%s)\n", strerror(saved_errno)));
return -1;
}
break;
ret = sendto(s, &ip6pkt, sizeof(ip6pkt), 0,
(const struct sockaddr *)&dest->ip6,
sizeof(dest->ip6));
+ saved_errno = errno;
tmpdest->ip6.sin6_port = tmpport;
close(s);
if (ret != sizeof(ip6pkt)) {
- DEBUG(DEBUG_CRIT,(__location__ " failed sendto (%s)\n", strerror(errno)));
+ DEBUG(DEBUG_ERR,
+ ("Failed sendto (%s)\n", strerror(saved_errno)));
return -1;
}
break;
struct ip6_hdr ip6;
struct tcphdr tcp;
} ip6pkt;
+ int saved_errno;
switch (src->ip.sin_family) {
case AF_INET:
return -1;
}
- ret = sendto(s, &ip4pkt, sizeof(ip4pkt), 0, &dest->ip, sizeof(dest->ip));
+ ret = sendto(s, &ip4pkt, sizeof(ip4pkt), 0,
+ &dest->ip, sizeof(dest->ip));
+ saved_errno = errno;
close(s);
if (ret != sizeof(ip4pkt)) {
- DEBUG(DEBUG_CRIT,(__location__ " failed sendto (%s)\n", strerror(errno)));
+ DEBUG(DEBUG_ERR,
+ ("Failed sendto (%s)\n", strerror(saved_errno)));
return -1;
}
break;
tmpport = tmpdest->ip6.sin6_port;
tmpdest->ip6.sin6_port = 0;
- ret = sendto(s, &ip6pkt, sizeof(ip6pkt), 0, &dest->ip6, sizeof(dest->ip6));
+ ret = sendto(s, &ip6pkt, sizeof(ip6pkt), 0,
+ &dest->ip6, sizeof(dest->ip6));
+ saved_errno = errno;
tmpdest->ip6.sin6_port = tmpport;
close(s);
if (ret != sizeof(ip6pkt)) {
- DEBUG(DEBUG_CRIT,(__location__ " failed sendto (%s)\n", strerror(errno)));
+ DEBUG(DEBUG_ERR,
+ ("Failed sendto (%s)\n", strerror(saved_errno)));
return -1;
}
break;
struct ip6_hdr ip6;
struct tcphdr tcp;
} ip6pkt;
+ int saved_errno;
switch (src->ip.sin_family) {
case AF_INET:
return -1;
}
- ret = sendto(s, &ip4pkt, sizeof(ip4pkt), 0, &dest->ip, sizeof(dest->ip));
+ ret = sendto(s, &ip4pkt, sizeof(ip4pkt), 0,
+ &dest->ip, sizeof(dest->ip));
+ saved_errno = errno;
close(s);
if (ret != sizeof(ip4pkt)) {
- DEBUG(DEBUG_CRIT,(__location__ " failed sendto (%s)\n", strerror(errno)));
+ DEBUG(DEBUG_ERR,
+ ("Failed sendto (%s)\n", strerror(saved_errno)));
return -1;
}
break;
tmpport = tmpdest->ip6.sin6_port;
tmpdest->ip6.sin6_port = 0;
- ret = sendto(s, &ip6pkt, sizeof(ip6pkt), 0, &dest->ip6, sizeof(dest->ip6));
+ ret = sendto(s, &ip6pkt, sizeof(ip6pkt), 0,
+ &dest->ip6, sizeof(dest->ip6));
+ saved_errno = errno;
tmpdest->ip6.sin6_port = tmpport;
close(s);
if (ret != sizeof(ip6pkt)) {
- DEBUG(DEBUG_CRIT,(__location__ " failed sendto (%s)\n", strerror(errno)));
+ DEBUG(DEBUG_ERR,
+ ("Failed sendto (%s)\n", strerror(saved_errno)));
return -1;
}
break;
struct ip6_hdr ip6;
struct tcphdr tcp;
} ip6pkt;
+ int saved_errno;
switch (src->ip.sin_family) {
case AF_INET:
ret = sendto(s, &ip4pkt, sizeof(ip4pkt), 0,
(const struct sockaddr *)&dest->ip,
sizeof(dest->ip));
+ saved_errno = errno;
close(s);
if (ret != sizeof(ip4pkt)) {
- DEBUG(DEBUG_CRIT,(__location__ " failed sendto (%s)\n", strerror(errno)));
+ DEBUG(DEBUG_ERR,
+ ("Failed sendto (%s)\n", strerror(saved_errno)));
return -1;
}
break;
ret = sendto(s, &ip6pkt, sizeof(ip6pkt), 0,
(const struct sockaddr *)&dest->ip6,
sizeof(dest->ip6));
+ saved_errno = errno;
tmpdest->ip6.sin6_port = tmpport;
close(s);
if (ret != sizeof(ip6pkt)) {
- DEBUG(DEBUG_CRIT,(__location__ " failed sendto (%s)\n", strerror(errno)));
+ DEBUG(DEBUG_ERR,
+ ("Failed sendto (%s)\n", strerror(saved_errno)));
return -1;
}
break;