diff options
| author | Ben Pfaff <blp@nicira.com> | 2009-12-14 22:59:55 -0800 |
|---|---|---|
| committer | Justin Pettit <jpettit@nicira.com> | 2009-12-14 22:59:55 -0800 |
| commit | c100e025e2ca1bc330512e003bac8359ee65318d (patch) | |
| tree | 60e5c672ac96788d1fe33430e65974ed2735e72d /lib/netdev-linux.c | |
| parent | c39c2868e050922b440fdc9f0ef28b5e2e36fefb (diff) | |
| download | openvswitch-c100e025e2ca1bc330512e003bac8359ee65318d.tar.gz | |
netdev-linux: Fix aliasing error.
The latest version of GCC flags a common socket convention as breaking
strict-aliasing rules. This commit removes the aliasing and gets rid of
the scary warning.
Diffstat (limited to 'lib/netdev-linux.c')
| -rw-r--r-- | lib/netdev-linux.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c index 0dff5082b..18d327425 100644 --- a/lib/netdev-linux.c +++ b/lib/netdev-linux.c @@ -1710,14 +1710,14 @@ netdev_linux_arp_lookup(const struct netdev *netdev, uint32_t ip, uint8_t mac[ETH_ADDR_LEN]) { struct arpreq r; - struct sockaddr_in *pa; + struct sockaddr_in sin; int retval; memset(&r, 0, sizeof r); - pa = (struct sockaddr_in *) &r.arp_pa; - pa->sin_family = AF_INET; - pa->sin_addr.s_addr = ip; - pa->sin_port = 0; + sin.sin_family = AF_INET; + sin.sin_addr.s_addr = ip; + sin.sin_port = 0; + memcpy(&r.arp_pa, &sin, sizeof sin); r.arp_ha.sa_family = ARPHRD_ETHER; r.arp_flags = 0; strncpy(r.arp_dev, netdev->name, sizeof r.arp_dev); |
