+/*
+ * Copyright (C) 1996-2018 The Squid Software Foundation and contributors
+ *
+ * Squid software is distributed under GPLv2+ license and includes
+ * contributions from numerous individuals and organizations.
+ * Please see the COPYING and CONTRIBUTORS files for details.
+ */
+
#ifndef _SQUID_EUI_EUI48_H
#define _SQUID_EUI_EUI48_H
-#include "config.h"
-
#if USE_SQUID_EUI
/* EUI-48 is 6 bytes. */
#define SZ_EUI48_BUF 6
-class IpAddress;
+namespace Ip
+{
+class Address;
+};
-#if HAVE_CSTRING
#include <cstring>
-#endif
namespace Eui
{
{
public:
- Eui48() { clear(); };
- Eui48(const Eui48 &t) { memcpy(this, &t, sizeof(Eui48)); };
- ~Eui48() {};
+ Eui48() { clear(); }
+ Eui48(const Eui48 &t) { memcpy(this, &t, sizeof(Eui48)); }
+ bool operator== (const Eui48 &t) const { return memcmp(eui, t.eui, SZ_EUI48_BUF) == 0; }
+ bool operator< (const Eui48 &t) const { return memcmp(eui, t.eui, SZ_EUI48_BUF) < 0; }
+ ~Eui48() {}
const unsigned char *get(void);
if (len < SZ_EUI48_BUF) clear();
memcpy(eui, src, len);
return true;
- };
+ }
- void clear() { memset(eui, 0, SZ_EUI48_BUF); };
+ void clear() { memset(eui, 0, SZ_EUI48_BUF); }
/**
* Decode an ascii representation of an EUI-48 ethernet address.
* \retval false Conversion to ASCII failed.
* \retval true Conversion completed successfully.
*/
- bool encode(char *buf, const int len);
+ bool encode(char *buf, const int len) const;
// lookup an EUI-48 / MAC address via ARP
- bool lookup(IpAddress &c);
+ bool lookup(const Ip::Address &c);
private:
unsigned char eui[SZ_EUI48_BUF];
};
-}; // namespace Eui
+} // namespace Eui
#endif /* USE_SQUID_EUI */
#endif /* _SQUID_EUI_EUI48_H */
+