diff options
author | andre <andre@FreeBSD.org> | 2006-01-23 17:06:32 +0000 |
---|---|---|
committer | andre <andre@FreeBSD.org> | 2006-01-23 17:06:32 +0000 |
commit | 3546e7b84362500d04554d3fe8b9cd482e12ad1e (patch) | |
tree | f54ec3fb092df0926ac2794337706470bf0796a9 /sys/netinet/ip_icmp.c | |
parent | 28f2f4cc1f027fbf4ccedb81c6018f68b2183ebe (diff) | |
download | FreeBSD-src-3546e7b84362500d04554d3fe8b9cd482e12ad1e.zip FreeBSD-src-3546e7b84362500d04554d3fe8b9cd482e12ad1e.tar.gz |
Simplify ip_next_mtu() and make its logic more easy to see while
silencing code analysis tools.
Found by: Coverity Prevent(tm)
Coverity ID: CID341
Sponsored by: TCP/IP Optimization Fundraise 2005
Diffstat (limited to 'sys/netinet/ip_icmp.c')
-rw-r--r-- | sys/netinet/ip_icmp.c | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/sys/netinet/ip_icmp.c b/sys/netinet/ip_icmp.c index 0d3131a..93c754d 100644 --- a/sys/netinet/ip_icmp.c +++ b/sys/netinet/ip_icmp.c @@ -854,28 +854,21 @@ ip_next_mtu(mtu, dir) 65535, 32000, 17914, 8166, 4352, 2002, 1492, 1280, 1006, 508, 296, 68, 0 }; - int i; + int i, size; - for (i = 0; i < (sizeof mtutab) / (sizeof mtutab[0]); i++) { - if (mtu >= mtutab[i]) - break; - } - - if (dir < 0) { - if (i == 0) { - return 0; - } else { - return mtutab[i - 1]; - } + size = (sizeof mtutab) / (sizeof mtutab[0]); + if (dir >= 0) { + for (i = 0; i < size; i++) { + if (mtu > mtutab[i]) + return mtutab[i]; } else { - if (mtutab[i] == 0) { - return 0; - } else if(mtu > mtutab[i]) { - return mtutab[i]; - } else { - return mtutab[i + 1]; - } + for (i = size - 1; i >= 0; i--) + if (mtu < mtutab[i]) + return mtutab[i]; + if (mtu == mtutab[0]) + return mtutab[0]; } + return 0; } |