]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/eui/Eui64.h
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
9 #ifndef SQUID_SRC_EUI_EUI64_H
10 #define SQUID_SRC_EUI_EUI64_H
21 #include <sys/eui64.h>
27 /* EUI-64 is 8 bytes. */
28 #if defined(EUI64_LEN)
29 #define SZ_EUI64_BUF EUI64_LEN
31 #define SZ_EUI64_BUF 8
40 bool operator== (const Eui64
&t
) const { return (memcmp(eui
,t
.eui
,SZ_EUI64_BUF
) == 0); }
41 bool operator< (const Eui64
&t
) const { return (memcmp(eui
,t
.eui
,SZ_EUI64_BUF
) < 0); }
43 const unsigned char *get(void);
45 bool set(const char *src
, const int len
) {
46 if (len
> SZ_EUI64_BUF
) return false;
47 if (len
< SZ_EUI64_BUF
) clear();
48 memcpy(eui
, src
, len
);
52 void clear() { memset(eui
, 0, SZ_EUI64_BUF
); }
55 * Decode an ascii representation of an EUI-64 address.
57 * \param asc ASCII representation of an EUI-64 address
58 * \param eth Binary representation of the EUI_64 address
59 * \retval false Conversion to binary failed. Invalid address
60 * \retval true Conversion completed successfully
62 bool decode(const char *asc
);
65 * Encode an ascii representation (asc) of an EUI-64 address.
67 * \param buf Buffer to receive ASCII representation of an EUI-64 address
68 * \param len Length of the buffer space available. Must be >= SZ_EUI64_BUF bytes or the encode will fail.
69 * \param eui Binary representation of the EUI-64 address
70 * \retval false Conversion to ASCII failed.
71 * \retval true Conversion completed successfully.
73 bool encode(char *buf
, const int len
) const;
75 // lookup an EUI-64 address via IPv6 SLAAC or NDP
76 bool lookup(const Ip::Address
&c
);
78 // lookup an EUI-64 address via IPv6 NDP
79 bool lookupNdp(const Ip::Address
&c
);
81 // lookup an EUI-64 address via decoding the IPv6 address SLAAC data
82 bool lookupSlaac(const Ip::Address
&c
);
85 unsigned char eui
[SZ_EUI64_BUF
];
90 #endif /* USE_SQUID_EUI */
91 #endif /* SQUID_SRC_EUI_EUI64_H */