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) int port)
{ {
memcpy(addr_with_port, addr, sizeof(struct sockaddr_storage)); 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 */ /* Construct a header for IP version 4 */
@ -210,8 +210,8 @@ void set_udp_ports(
udp->checksum = 0; udp->checksum = 0;
} }
*(uint16_t *)sockaddr_port_offset(&probe->local_addr) = udp->srcport; *sockaddr_port_offset(&probe->local_addr) = udp->srcport;
*(uint16_t *)sockaddr_port_offset(&probe->remote_addr) = udp->dstport; *sockaddr_port_offset(&probe->remote_addr) = udp->dstport;
} }
/* Prepend pseudoheader to the udp datagram and calculate checksum */ /* 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) if (probe->remote_addr.ss_family != remote_addr->ss_family)
return; return;
if (udp->dstport != *(uint16_t *)sockaddr_port_offset(&probe->remote_addr) ) if (udp->dstport != *sockaddr_port_offset(&probe->remote_addr) )
return; return;
if (udp->srcport != *(uint16_t *)sockaddr_port_offset(&probe->local_addr) ) if (udp->srcport != *sockaddr_port_offset(&probe->local_addr) )
return; return;
void *saddr, *daddr; void *saddr, *daddr;

View File

@ -110,7 +110,7 @@ int resolve_probe_addresses(
if (param->protocol == IPPROTO_ICMP) { if (param->protocol == IPPROTO_ICMP) {
if ( (src_sockaddr->ss_family == AF_INET && !net_state->platform.ip4_socket_raw) || 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) ) (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; return 0;
@ -319,7 +319,7 @@ int find_source_addr(
the connect will fail. We aren't actually sending the connect will fail. We aren't actually sending
anything to the port. 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); len = sockaddr_addr_size(&dest_with_port);
sock = socket(destaddr->ss_family, SOCK_DGRAM, IPPROTO_UDP); 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 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. 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; return 0;
} }

View File

@ -65,9 +65,9 @@ int send_packet(
} else { } else {
send_socket = net_state->platform.ip6_txrx_udp_socket; send_socket = net_state->platform.ip6_txrx_udp_socket;
if (param->dest_port) { if (param->dest_port) {
*(uint16_t *)sockaddr_port_offset(sockaddr) = htons(param->dest_port); *sockaddr_port_offset(sockaddr) = htons(param->dest_port);
} else { } 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) { } else if (param->protocol == IPPROTO_UDP) {
send_socket = net_state->platform.ip4_txrx_udp_socket; send_socket = net_state->platform.ip4_txrx_udp_socket;
if (param->dest_port) { if (param->dest_port) {
*(uint16_t *)sockaddr_port_offset(sockaddr) = htons(param->dest_port); *sockaddr_port_offset(sockaddr) = htons(param->dest_port);
} else { } 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; return 0;
} }
void *sockaddr_port_offset(const void *x) in_port_t *sockaddr_port_offset(const void *x)
{ {
if( x == NULL ) if( x == NULL )
return NULL; return NULL;

View File

@ -3,4 +3,4 @@ unsigned int sockaddr_size(const void *x);
void *sockaddr_addr_offset(const void *x); void *sockaddr_addr_offset(const void *x);
unsigned int sockaddr_addr_size(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);