base: fix operator== for comparing EthAddr objects
authorAnthony Gutierrez <atgutier@umich.edu>
Wed, 9 Jul 2014 13:28:15 +0000 (09:28 -0400)
committerAnthony Gutierrez <atgutier@umich.edu>
Wed, 9 Jul 2014 13:28:15 +0000 (09:28 -0400)
this operator uses memcmp() to detect if two EthAddr object have the same
address, however memcmp() will return 0 if all bytes are equal. operator==
returns the return value of memcmp() to indicate whether or not two
address are equal. this is incorrect as it will always give the opposite of
the intended behavior. this patch fixes that problem.

src/base/inet.cc

index bdd1b57ad3e75b70ae89c8041967c1503fcbb8df..190a7a11ee22cbfe7c38ce7a1f015e427e34ec8b 100644 (file)
@@ -124,7 +124,7 @@ EthAddr::string() const
 bool
 operator==(const EthAddr &left, const EthAddr &right)
 {
-    return memcmp(left.bytes(), right.bytes(), ETH_ADDR_LEN);
+    return !memcmp(left.bytes(), right.bytes(), ETH_ADDR_LEN);
 }
 
 ostream &