]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/eui/Eui48.h
1 #ifndef _SQUID_EUI_EUI48_H
2 #define _SQUID_EUI_EUI48_H
8 /* EUI-48 is 6 bytes. */
20 /* memcpy and friends */
33 Eui48(const Eui48
&t
) { memcpy(this, &t
, sizeof(Eui48
)); };
36 const unsigned char *get(void);
38 bool set(const char *src
, const int len
) {
39 if (len
> SZ_EUI48_BUF
) return false;
40 if (len
< SZ_EUI48_BUF
) clear();
41 memcpy(eui
, src
, len
);
45 void clear() { memset(eui
, 0, SZ_EUI48_BUF
); };
48 * Decode an ascii representation of an EUI-48 ethernet address.
50 * \param asc ASCII representation of an ethernet (MAC) address
51 * \param eth Binary representation of the ethernet address
52 * \retval false Conversion to binary failed. Invalid address
53 * \retval true Conversion completed successfully
55 bool decode(const char *asc
);
58 * Encode an ascii representation (asc) of an EUI-48 ethernet address.
60 * \param buf Buffer to receive ASCII representation of an ethernet (MAC) address
61 * \param len Length of the buffer space available. Must be >= SZ_EUI48_BUF bytes or the encode will fail.
62 * \param eui Binary representation of the ethernet address
63 * \retval false Conversion to ASCII failed.
64 * \retval true Conversion completed successfully.
66 bool encode(char *buf
, const int len
);
68 // lookup an EUI-48 / MAC address via ARP
69 bool lookup(const Ip::Address
&c
);
72 unsigned char eui
[SZ_EUI48_BUF
];
77 #endif /* USE_SQUID_EUI */
78 #endif /* _SQUID_EUI_EUI48_H */