X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fcsum.c;h=33ec28b646fad4140910a5f6f0219560999f7f92;hb=e7668254f2f8f7208905c858ffbc84a65bb13815;hp=922f686257594caf2e7f7af3d03b0d9c485b8c02;hpb=5f55c39b21e69025045437ffbd3bb98fe6ce2e89;p=openvswitch diff --git a/lib/csum.c b/lib/csum.c index 922f6862..33ec28b6 100644 --- a/lib/csum.c +++ b/lib/csum.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009 Nicira Networks. + * Copyright (c) 2008, 2009, 2010 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ #include #include "csum.h" +#include "unaligned.h" /* Returns the IP checksum of the 'n' bytes in 'data'. * @@ -57,8 +58,8 @@ csum_continue(uint32_t partial, const void *data_, size_t n) { const uint16_t *data = data_; - for (; n > 1; n -= 2) { - partial = csum_add16(partial, *data++); + for (; n > 1; n -= 2, data++) { + partial = csum_add16(partial, get_unaligned_u16(data)); } if (n) { partial += *(uint8_t *) data;