Skip to content

Commit dd2602d

Browse files
gfreewindummakynes
authored andcommitted
netfilter: xt_multiport: Use switch case instead of multiple condition checks
There are multiple equality condition checks in the original codes, so it is better to use switch case instead of them. Signed-off-by: Gao Feng <[email protected]> Signed-off-by: Pablo Neira Ayuso <[email protected]>
1 parent 432490f commit dd2602d

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

net/netfilter/xt_multiport.c

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,29 +42,31 @@ ports_match_v1(const struct xt_multiport_v1 *minfo,
4242
e = minfo->ports[++i];
4343
pr_debug("src or dst matches with %d-%d?\n", s, e);
4444

45-
if (minfo->flags == XT_MULTIPORT_SOURCE
46-
&& src >= s && src <= e)
47-
return true ^ minfo->invert;
48-
if (minfo->flags == XT_MULTIPORT_DESTINATION
49-
&& dst >= s && dst <= e)
50-
return true ^ minfo->invert;
51-
if (minfo->flags == XT_MULTIPORT_EITHER
52-
&& ((dst >= s && dst <= e)
53-
|| (src >= s && src <= e)))
54-
return true ^ minfo->invert;
45+
switch (minfo->flags) {
46+
case XT_MULTIPORT_SOURCE:
47+
return (src >= s && src <= e) ^ minfo->invert;
48+
case XT_MULTIPORT_DESTINATION:
49+
return (dst >= s && dst <= e) ^ minfo->invert;
50+
case XT_MULTIPORT_EITHER:
51+
return ((dst >= s && dst <= e) ||
52+
(src >= s && src <= e)) ^ minfo->invert;
53+
default:
54+
break;
55+
}
5556
} else {
5657
/* exact port matching */
5758
pr_debug("src or dst matches with %d?\n", s);
5859

59-
if (minfo->flags == XT_MULTIPORT_SOURCE
60-
&& src == s)
61-
return true ^ minfo->invert;
62-
if (minfo->flags == XT_MULTIPORT_DESTINATION
63-
&& dst == s)
64-
return true ^ minfo->invert;
65-
if (minfo->flags == XT_MULTIPORT_EITHER
66-
&& (src == s || dst == s))
67-
return true ^ minfo->invert;
60+
switch (minfo->flags) {
61+
case XT_MULTIPORT_SOURCE:
62+
return (src == s) ^ minfo->invert;
63+
case XT_MULTIPORT_DESTINATION:
64+
return (dst == s) ^ minfo->invert;
65+
case XT_MULTIPORT_EITHER:
66+
return (src == s || dst == s) ^ minfo->invert;
67+
default:
68+
break;
69+
}
6870
}
6971
}
7072

0 commit comments

Comments
 (0)