sockaddr - save a cast accessing the port

This commit is contained in:
Markus Kötter 2018-11-02 09:01:34 +01:00
parent 08750eb444
commit 5c5603d68e
6 changed files with 14 additions and 14 deletions

View File

@ -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 */

View File

@ -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;

View File

@ -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;
}

View File

@ -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;
}
}
}

View File

@ -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;

View File

@ -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);