projects
/
flowspec-xdp
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
31c9150
)
Fix checksum offset calculation
author
Matt Corallo
<git@bluematt.me>
Tue, 11 May 2021 23:36:00 +0000
(23:36 +0000)
committer
Matt Corallo
<git@bluematt.me>
Tue, 11 May 2021 23:53:31 +0000
(23:53 +0000)
genrules.py
patch
|
blob
|
history
diff --git
a/genrules.py
b/genrules.py
index db138a8724e7ec4169d66db37bc95cbfbe3eb63d..da42e01732795f85a6c30b3e53913d7ac9a304f9 100755
(executable)
--- a/
genrules.py
+++ b/
genrules.py
@@
-439,7
+439,8
@@
with open("rules.h", "w") as out:
write_rule("uint8_t orig_tos = ip->tos;")
write_rule("ip->tos = (ip->tos & 3) | " + str(low_bytes << 2) + ";")
write_rule("chk = (chk - orig_tos + ip->tos);")
write_rule("uint8_t orig_tos = ip->tos;")
write_rule("ip->tos = (ip->tos & 3) | " + str(low_bytes << 2) + ";")
write_rule("chk = (chk - orig_tos + ip->tos);")
- write_rule("if (unlikely(chk < 0)) { chk += 65534; }")
+ write_rule("if (unlikely(chk > 0xffff)) { chk -= 65535; }")
+ write_rule("else if (unlikely(chk < 0)) { chk += 65535; }")
write_rule("ip->check = ~BE16(chk);")
else:
write_rule("ip6->priority = " + str(low_bytes >> 2) + ";")
write_rule("ip->check = ~BE16(chk);")
else:
write_rule("ip6->priority = " + str(low_bytes >> 2) + ";")