ueventd: Fix aliasing violations

Fix aliasing violation, allowing us to enable the
-fstrict-aliasing optimization

Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
diff --git a/uevent/uevent.c b/uevent/uevent.c
index b9e3557..b5e5511 100644
--- a/uevent/uevent.c
+++ b/uevent/uevent.c
@@ -41,14 +41,17 @@
 /* Returns 0 on failure, 1 on success */
 int uevent_init()
 {
-    struct sockaddr_nl addr;
+    union {
+        struct sockaddr_nl nl;
+        struct sockaddr generic;
+    } addr;
     int sz = 64*1024;
     int s;
 
-    memset(&addr, 0, sizeof(addr));
-    addr.nl_family = AF_NETLINK;
-    addr.nl_pid = getpid();
-    addr.nl_groups = 0xffffffff;
+    memset(&addr.nl, 0, sizeof(addr.nl));
+    addr.nl.nl_family = AF_NETLINK;
+    addr.nl.nl_pid = getpid();
+    addr.nl.nl_groups = 0xffffffff;
 
     s = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
     if(s < 0)
@@ -56,7 +59,7 @@
 
     setsockopt(s, SOL_SOCKET, SO_RCVBUFFORCE, &sz, sizeof(sz));
 
-    if(bind(s, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
+    if(bind(s, &addr.generic, sizeof(addr.nl)) < 0) {
         close(s);
         return 0;
     }