mirror of
https://repo.or.cz/socat.git
synced 2024-12-22 15:32:35 +00:00
added struct sockaddr_ll to union sockaddr_union to avoid "strict aliasing"
This commit is contained in:
parent
30a3ec3baa
commit
a8a8626c2f
5 changed files with 15 additions and 8 deletions
4
CHANGES
4
CHANGES
|
@ -1,4 +1,8 @@
|
|||
|
||||
corrections:
|
||||
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"
|
||||
"1.7.1.1+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 a new issue