summaryrefslogtreecommitdiffstats
path: root/sys/netinet/ip_icmp.c
diff options
context:
space:
mode:
authorandre <andre@FreeBSD.org>2006-01-23 17:06:32 +0000
committerandre <andre@FreeBSD.org>2006-01-23 17:06:32 +0000
commit3546e7b84362500d04554d3fe8b9cd482e12ad1e (patch)
treef54ec3fb092df0926ac2794337706470bf0796a9 /sys/netinet/ip_icmp.c
parent28f2f4cc1f027fbf4ccedb81c6018f68b2183ebe (diff)
downloadFreeBSD-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.c31
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;
}
OpenPOWER on IntegriCloud