projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix compiler warnings.
[tinc]
/
src
/
route.c
diff --git
a/src/route.c
b/src/route.c
index
92dc1cd
..
4d71279
100644
(file)
--- a/
src/route.c
+++ b/
src/route.c
@@
-59,6
+59,7
@@
static const size_t opt_size = sizeof(struct nd_opt_hdr);
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#endif
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#endif
+volatile int dummy;
static timeout_t age_subnets_timeout;
/* RFC 1071 */
static timeout_t age_subnets_timeout;
/* RFC 1071 */
@@
-80,6
+81,11
@@
static uint16_t inet_checksum(void *data, int len, uint16_t prevsum) {
checksum = (checksum & 0xFFFF) + (checksum >> 16);
}
checksum = (checksum & 0xFFFF) + (checksum >> 16);
}
+ // Work around a compiler optimization bug.
+ if(checksum) {
+ dummy = 1;
+ }
+
return ~checksum;
}
return ~checksum;
}
@@
-651,11
+657,13
@@
static void route_ipv4(node_t *source, vpn_packet_t *packet) {
}
if(!subnet->owner->status.reachable) {
}
if(!subnet->owner->status.reachable) {
- return route_ipv4_unreachable(source, packet, ether_size, ICMP_DEST_UNREACH, ICMP_NET_UNREACH);
+ route_ipv4_unreachable(source, packet, ether_size, ICMP_DEST_UNREACH, ICMP_NET_UNREACH);
+ return;
}
if(forwarding_mode == FMODE_OFF && source != myself && subnet->owner != myself) {
}
if(forwarding_mode == FMODE_OFF && source != myself && subnet->owner != myself) {
- return route_ipv4_unreachable(source, packet, ether_size, ICMP_DEST_UNREACH, ICMP_NET_ANO);
+ route_ipv4_unreachable(source, packet, ether_size, ICMP_DEST_UNREACH, ICMP_NET_ANO);
+ return;
}
if(decrement_ttl && source != myself && subnet->owner != myself)
}
if(decrement_ttl && source != myself && subnet->owner != myself)
@@
-675,7
+683,8
@@
static void route_ipv4(node_t *source, vpn_packet_t *packet) {
}
if(directonly && subnet->owner != via) {
}
if(directonly && subnet->owner != via) {
- return route_ipv4_unreachable(source, packet, ether_size, ICMP_DEST_UNREACH, ICMP_NET_ANO);
+ route_ipv4_unreachable(source, packet, ether_size, ICMP_DEST_UNREACH, ICMP_NET_ANO);
+ return;
}
if(via && packet->len > MAX(via->mtu, 590) && via != myself) {
}
if(via && packet->len > MAX(via->mtu, 590) && via != myself) {
@@
-742,11
+751,13
@@
static void route_ipv6(node_t *source, vpn_packet_t *packet) {
}
if(!subnet->owner->status.reachable) {
}
if(!subnet->owner->status.reachable) {
- return route_ipv6_unreachable(source, packet, ether_size, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_NOROUTE);
+ route_ipv6_unreachable(source, packet, ether_size, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_NOROUTE);
+ return;
}
if(forwarding_mode == FMODE_OFF && source != myself && subnet->owner != myself) {
}
if(forwarding_mode == FMODE_OFF && source != myself && subnet->owner != myself) {
- return route_ipv6_unreachable(source, packet, ether_size, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_ADMIN);
+ route_ipv6_unreachable(source, packet, ether_size, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_ADMIN);
+ return;
}
if(decrement_ttl && source != myself && subnet->owner != myself)
}
if(decrement_ttl && source != myself && subnet->owner != myself)
@@
-766,7
+777,8
@@
static void route_ipv6(node_t *source, vpn_packet_t *packet) {
}
if(directonly && subnet->owner != via) {
}
if(directonly && subnet->owner != via) {
- return route_ipv6_unreachable(source, packet, ether_size, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_ADMIN);
+ route_ipv6_unreachable(source, packet, ether_size, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_ADMIN);
+ return;
}
if(via && packet->len > MAX(via->mtu, 1294) && via != myself) {
}
if(via && packet->len > MAX(via->mtu, 1294) && via != myself) {