From: Markus Kötter Date: Fri, 2 Nov 2018 08:01:34 +0000 (+0100) Subject: sockaddr - save a cast accessing the port X-Git-Tag: v0.93~1^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5c5603d68eb942213146732e4f84573036c3ab88;p=thirdparty%2Fmtr.git sockaddr - save a cast accessing the port --- diff --git a/packet/construct_unix.c b/packet/construct_unix.c index 2268a22..e1e3866 100644 --- a/packet/construct_unix.c +++ b/packet/construct_unix.c @@ -92,7 +92,7 @@ void construct_addr_port( int port) { memcpy(addr_with_port, addr, sizeof(struct sockaddr_storage)); - *(uint16_t *)sockaddr_port_offset(addr) = htons(port); + *sockaddr_port_offset(addr) = htons(port); } /* Construct a header for IP version 4 */ @@ -210,8 +210,8 @@ void set_udp_ports( udp->checksum = 0; } - *(uint16_t *)sockaddr_port_offset(&probe->local_addr) = udp->srcport; - *(uint16_t *)sockaddr_port_offset(&probe->remote_addr) = udp->dstport; + *sockaddr_port_offset(&probe->local_addr) = udp->srcport; + *sockaddr_port_offset(&probe->remote_addr) = udp->dstport; } /* Prepend pseudoheader to the udp datagram and calculate checksum */ diff --git a/packet/deconstruct_unix.c b/packet/deconstruct_unix.c index 3c535e1..1af7419 100644 --- a/packet/deconstruct_unix.c +++ b/packet/deconstruct_unix.c @@ -88,10 +88,10 @@ void handle_inner_udp_packet( if (probe->remote_addr.ss_family != remote_addr->ss_family) return; - if (udp->dstport != *(uint16_t *)sockaddr_port_offset(&probe->remote_addr) ) + if (udp->dstport != *sockaddr_port_offset(&probe->remote_addr) ) return; - if (udp->srcport != *(uint16_t *)sockaddr_port_offset(&probe->local_addr) ) + if (udp->srcport != *sockaddr_port_offset(&probe->local_addr) ) return; void *saddr, *daddr; diff --git a/packet/probe.c b/packet/probe.c index 8eb80e8..0441efd 100644 --- a/packet/probe.c +++ b/packet/probe.c @@ -110,7 +110,7 @@ int resolve_probe_addresses( if (param->protocol == IPPROTO_ICMP) { if ( (src_sockaddr->ss_family == AF_INET && !net_state->platform.ip4_socket_raw) || (src_sockaddr->ss_family == AF_INET6 && !net_state->platform.ip6_socket_raw) ) - *(uint16_t *)sockaddr_port_offset(src_sockaddr) = htons(getpid()); + *sockaddr_port_offset(src_sockaddr) = htons(getpid()); } return 0; @@ -319,7 +319,7 @@ int find_source_addr( the connect will fail. We aren't actually sending anything to the port. */ - *(uint16_t *)sockaddr_port_offset(&dest_with_port) = htons(1); + *sockaddr_port_offset(&dest_with_port) = htons(1); len = sockaddr_addr_size(&dest_with_port); sock = socket(destaddr->ss_family, SOCK_DGRAM, IPPROTO_UDP); @@ -361,7 +361,7 @@ int find_source_addr( Zero the port, as we may later use this address to finding, and we don't want to use the port from the socket we just created. */ - *(uint16_t *)sockaddr_port_offset(&srcaddr) = 0; + *sockaddr_port_offset(&srcaddr) = 0; return 0; } diff --git a/packet/probe_unix.c b/packet/probe_unix.c index 405b53c..b3177e5 100644 --- a/packet/probe_unix.c +++ b/packet/probe_unix.c @@ -65,9 +65,9 @@ int send_packet( } else { send_socket = net_state->platform.ip6_txrx_udp_socket; if (param->dest_port) { - *(uint16_t *)sockaddr_port_offset(sockaddr) = htons(param->dest_port); + *sockaddr_port_offset(sockaddr) = htons(param->dest_port); } else { - *(uint16_t *)sockaddr_port_offset(sockaddr) = sequence; + *sockaddr_port_offset(sockaddr) = sequence; } } } @@ -86,9 +86,9 @@ int send_packet( } else if (param->protocol == IPPROTO_UDP) { send_socket = net_state->platform.ip4_txrx_udp_socket; if (param->dest_port) { - *(uint16_t *)sockaddr_port_offset(sockaddr) = htons(param->dest_port); + *sockaddr_port_offset(sockaddr) = htons(param->dest_port); } else { - *(uint16_t *)sockaddr_port_offset(sockaddr) = sequence; + *sockaddr_port_offset(sockaddr) = sequence; } } } diff --git a/packet/sockaddr.c b/packet/sockaddr.c index c897da2..2a4b34a 100644 --- a/packet/sockaddr.c +++ b/packet/sockaddr.c @@ -51,7 +51,7 @@ unsigned int sockaddr_size(const void *x) return 0; } -void *sockaddr_port_offset(const void *x) +in_port_t *sockaddr_port_offset(const void *x) { if( x == NULL ) return NULL; diff --git a/packet/sockaddr.h b/packet/sockaddr.h index ae7fc19..9e44c44 100644 --- a/packet/sockaddr.h +++ b/packet/sockaddr.h @@ -3,4 +3,4 @@ unsigned int sockaddr_size(const void *x); void *sockaddr_addr_offset(const void *x); unsigned int sockaddr_addr_size(const void *x); -void *sockaddr_port_offset(const void *x); +in_port_t *sockaddr_port_offset(const void *x);