Thanks for your help! The issue seems to be resolved, but I'm still left with some questions. Responses inline;
Which header is correctly defining the data types? linux/types.h or sys/types.h ... why do they differ?
linux/types.h contains kernel definitions and shouldn't be used for user space programs. sys/types.h contains the user space version. Somewhere, something is including something it shouldn't, but I can't immediately say what.
That sounds logical. I have identified the double inclusion based on your advise and explanation. aireplay-ng.c has an include for linux/rtc.h and linux/if_ether.h and sys/types.h. It appears that if_ether.h references linux/types.h which conflicts with sys/types.h. An aireplay dev has confirmed this to only be an issue on SUSE (to their knowledge), thus far.
Off the top of my head I'd say there should be a user space version of linux/if_ether.h, but that's just a first impression
There is a userspace version at /usr/include/netinet/. I have altered the aireplay source to use userspace versions of all linux/ includes, but compile failed with an error in a function for RTC. Leaving rtc as a linux/ include and changing if_ether to netinet/ has allowed the program to successfully compile.
The bug is in either the program you're compiling or in glibc-devel. Not in gcc
Understood. The aireplay dev has not answered why they are using linux/ includes instead of userspace includes. It definitely seems to matter for RTC, but not for if_ether. I have suggested as best practice they should avoid the kernel includes. However, I am a little perplexed as to why that code works fine on Fedora, Ubuntu, Gentoo, etc.. but not SUSE. At that level it must be differences in kernel versions... Is this still an issue? Are there logical reasons to goto kernel includes ever from a userspace program? If not, I would say it's aireplay's issue and chalk it up as a fluke that it works most of the time on most distros. If so and they have a justification for using the kernel includes why doesn't the error occur on other distros? What is SUSE doing differently? Ryan