Refactor, removing one compare.
This changes the return code however the caller only tests for 0 and != 0. One might ask then, why multiple return codes when the caller only tests for 0 and != 0? From what I can tell, Darren probably passed various return codes for sake of debugging. The debugging code is long gone however we can still use the different return codes using DTrace FBT traces. We can still determine why the compare failed by examining the differences between the fr1 and fr2 frentry structs, which is a simple test in DTrace. This allows reducing the number of tests, improving the code while not affecting our ability to capture information for diagnostic purposes. MFC after: 1 week
This commit is contained in:
parent
e4a5561e01
commit
a422d59f7b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=350063
@ -4439,15 +4439,13 @@ ipf_rule_compare(frentry_t *fr1, frentry_t *fr2)
|
||||
if (bcmp((char *)&fr1->fr_func, (char *)&fr2->fr_func, FR_CMPSIZ(fr1))
|
||||
!= 0)
|
||||
return (4);
|
||||
if (fr1->fr_data && !fr2->fr_data)
|
||||
return (5);
|
||||
if (!fr1->fr_data && fr2->fr_data)
|
||||
return (6);
|
||||
if (fr1->fr_data) {
|
||||
if (bcmp(fr1->fr_caddr, fr2->fr_caddr, fr1->fr_dsize))
|
||||
return (7);
|
||||
if (!fr1->fr_data && !fr2->fr_data)
|
||||
return (0); /* move along, nothing to see here */
|
||||
if (fr1->fr_data && fr2->fr_data) {
|
||||
if (bcmp(fr1->fr_caddr, fr2->fr_caddr, fr1->fr_dsize) == 0)
|
||||
return (0); /* same */
|
||||
}
|
||||
return (0);
|
||||
return (5);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user