aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/udp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/udp.c')
-rw-r--r--src/net/udp.c24
1 files changed, 10 insertions, 14 deletions
diff --git a/src/net/udp.c b/src/net/udp.c
index 4a82e9761..b84d51610 100644
--- a/src/net/udp.c
+++ b/src/net/udp.c
@@ -22,19 +22,14 @@ static inline void copy_sockaddr ( struct sockaddr *source, struct sockaddr *des
memcpy ( dest, source, sizeof ( *dest ) );
}
-static inline uint16_t dest_port ( struct sockaddr *sock, uint16_t *dest ) {
+static inline uint16_t * dest_port ( struct sockaddr *sock ) {
switch ( sock->sa_family ) {
case AF_INET:
- dest = &sock->sin.sin_port;
- break;
+ return &sock->sin.sin_port;
case AF_INET6:
- dest = &sock->sin6.sin6_port;
- break;
- default:
- DBG ( "Network family %d not supported\n", sock->sa_family );
- return -EAFNOSUPPORT;
+ return &sock->sin6.sin6_port;
}
- return 0;
+ return NULL;
}
/**
@@ -49,7 +44,7 @@ void udp_dump ( struct udp_header *udphdr ) {
DBG ( "\tSource Port = %d\n", ntohs ( udphdr->source_port ) );
DBG ( "\tDestination Port = %d\n", ntohs ( udphdr->dest_port ) );
DBG ( "\tLength = %d\n", ntohs ( udphdr->len ) );
- DBG ( "\tChecksum = %d\n", ntohs ( udphdr->chksum ) );
+ DBG ( "\tChecksum = %x\n", ntohs ( udphdr->chksum ) );
DBG ( "\tChecksum located at %#x\n", &udphdr->chksum );
}
@@ -139,11 +134,12 @@ int udp_send ( struct udp_connection *conn, const void *data, size_t len ) {
* sending it over the network
*/
udphdr = pkb_push ( conn->tx_pkb, sizeof ( *udphdr ) );
- if ( (rc = dest_port ( sock, dest ) ) != 0 ) {
- return rc;
+ if ( (dest = dest_port ( sock ) ) == NULL ) {
+ DBG ( "Network family %d not supported\n", sock->sa_family );
+ return -EAFNOSUPPORT;
}
- udphdr->dest_port = htons ( *dest );
- udphdr->source_port = htons ( conn->local_port );
+ udphdr->dest_port = *dest;
+ udphdr->source_port = conn->local_port;
udphdr->len = htons ( pkb_len ( conn->tx_pkb ) );
udphdr->chksum = htons ( calc_chksum ( udphdr, sizeof ( *udphdr ) ) );