Make the UDP senddata() methods return a status code.

udp_connect() now follows the standard BSD sockets semantics and simply
sets the default address for outgoing packets; it doesn't filter incoming
packets.
This commit is contained in:
Michael Brown
2006-08-03 23:10:14 +00:00
parent a0a872f7f1
commit ffe0e24249
4 changed files with 19 additions and 36 deletions

View File

@@ -66,18 +66,6 @@ void udp_connect ( struct udp_connection *conn, struct sockaddr_tcpip *peer ) {
memcpy ( &conn->peer, peer, sizeof ( conn->peer ) );
}
/**
* Connect UDP connection to all remote hosts and ports
*
* @v conn UDP connection
*
* This undoes the effect of a call to udp_connect(), i.e. allows the
* connection to receive packets from all remote hosts and ports.
*/
void udp_connect_promisc ( struct udp_connection *conn ) {
memset ( &conn->peer, 0, sizeof ( conn->peer ) );
}
/**
* Open a local port
*
@@ -140,9 +128,8 @@ int udp_senddata ( struct udp_connection *conn ) {
return -ENOMEM;
}
pkb_reserve ( conn->tx_pkb, UDP_MAX_HLEN );
conn->udp_op->senddata ( conn, conn->tx_pkb->data,
pkb_available ( conn->tx_pkb ) );
return 0;
return conn->udp_op->senddata ( conn, conn->tx_pkb->data,
pkb_available ( conn->tx_pkb ) );
}
/**
@@ -271,14 +258,6 @@ static int udp_rx ( struct pk_buff *pkb, struct sockaddr_tcpip *st_src,
/* Bound to local port and local port doesn't match */
continue;
}
if ( conn->peer.st_family &&
( memcmp ( &conn->peer, st_src,
sizeof ( conn->peer ) ) != 0 ) ) {
/* Connected to remote port and remote port
* doesn't match
*/
continue;
}
/* Strip off the UDP header */
pkb_pull ( pkb, sizeof ( *udphdr ) );