diff --git a/ryu/lib/packet/packet_utils.py b/ryu/lib/packet/packet_utils.py new file mode 100644 index 00000000..d9714f0d --- /dev/null +++ b/ryu/lib/packet/packet_utils.py @@ -0,0 +1,27 @@ +# Copyright (C) 2012 Nippon Telegraph and Telephone Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +def carry_around_add(a, b): + c = a + b + return (c & 0xffff) + (c >> 16) + + +def checksum(data): + s = 0 + for i in range(0, len(data), 2): + w = data[i] + (data[i + 1] << 8) + s = carry_around_add(s, w) + return ~s & 0xffff