Haribabu Kommi, why have you read enough about EUI-64? Your function "macaddr64_trunc" sets 4 lower bytes as 0 whereas (according to the Wikipedia, but I can look for a standard) 3 bytes are still define an OUI (organizationally unique identifier), so truncation should be done for 5, not 4 lower octets.
The macros "hibits" should be 3 octets long, not 4; "lobits" --- 5 bytes, not 4. In the other case your comparisons fail.
What document have you used to write the patch? Are short form formats correct in macaddr64_in?
Yes, OUI is 24 bits. I just created prototype patch to check community opinion on it. I checked the following links [1], [2] for the development of macaddr8. But the patch is
not correct for all the cases, it is just a prototype to see whether it accepts 8 byte