mirror of
https://github.com/moparisthebest/socat
synced 2024-12-22 06:58:47 -05:00
merged: added struct sockaddr_ll to union sockaddr_union to avoid "strict aliasing"
This commit is contained in:
commit
3b9393ac9a
3
CHANGES
3
CHANGES
@ -26,6 +26,9 @@ porting:
|
||||
on some 64bit systems a compiler warning "cast from pointer to integer
|
||||
of different size" was issued on some option definitions
|
||||
|
||||
added struct sockaddr_ll to union sockaddr_union to avoid "strict
|
||||
aliasing" warnings (problem reported by Paul Wouters)
|
||||
|
||||
####################### V 1.7.1.1:
|
||||
|
||||
corrections:
|
||||
|
2
VERSION
2
VERSION
@ -1 +1 @@
|
||||
"1.7.1.1+64bit+userlate+reneg+sockshtons+subsigchld"
|
||||
"1.7.1.1+64bit+userlate+reneg+sockshtons+subsigchld+sockaddrll"
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* source: sysutils.h */
|
||||
/* Copyright Gerhard Rieger 2001-2008 */
|
||||
/* Copyright Gerhard Rieger 2001-2010 */
|
||||
/* Published under the GNU General Public License V.2, see file COPYING */
|
||||
|
||||
#ifndef __sysutils_h_included
|
||||
@ -27,6 +27,9 @@ union sockaddr_union {
|
||||
#if WITH_IP6
|
||||
struct sockaddr_in6 ip6;
|
||||
#endif /* WITH_IP6 */
|
||||
#if WITH_INTERFACE
|
||||
struct sockaddr_ll ll;
|
||||
#endif
|
||||
} ;
|
||||
#endif /* _WITH_SOCKET */
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* source: xio-interface.c */
|
||||
/* Copyright Gerhard Rieger 2008 */
|
||||
/* Copyright Gerhard Rieger 2010 */
|
||||
/* Published under the GNU General Public License V.2, see file COPYING */
|
||||
|
||||
/* this file contains the source for opening addresses of raw socket type */
|
||||
@ -60,9 +60,9 @@ int _xioopen_interface(const char *ifname,
|
||||
needbind = true;
|
||||
}
|
||||
/*!!! parse by ':' */
|
||||
((struct sockaddr_ll *)&us)->sll_family = pf;
|
||||
((struct sockaddr_ll *)&us)->sll_protocol = htons(ETH_P_ALL);
|
||||
((struct sockaddr_ll *)&us)->sll_ifindex = ifidx;
|
||||
us.ll.sll_family = pf;
|
||||
us.ll.sll_protocol = htons(ETH_P_ALL);
|
||||
us.ll.sll_ifindex = ifidx;
|
||||
uslen = sizeof(sall);
|
||||
needbind = true;
|
||||
xfd->peersa = (union sockaddr_union)us;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* source: xioread.c */
|
||||
/* Copyright Gerhard Rieger 2001-2009 */
|
||||
/* Copyright Gerhard Rieger 2001-2010 */
|
||||
/* Published under the GNU General Public License V.2, see file COPYING */
|
||||
|
||||
/* this is the source of the extended read function */
|
||||
@ -148,7 +148,7 @@ ssize_t xioread(xiofile_t *file, void *buff, size_t bufsiz) {
|
||||
*/
|
||||
#if defined(PF_PACKET) && defined(PACKET_OUTGOING)
|
||||
if (from.soa.sa_family == PF_PACKET) {
|
||||
if ((((struct sockaddr_ll *)&from.soa)->sll_pkttype & PACKET_OUTGOING)
|
||||
if ((from.ll.sll_pkttype & PACKET_OUTGOING)
|
||||
== 0) {
|
||||
errno = EAGAIN; return -1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user