mirror of
https://github.com/ipxe/ipxe
synced 2025-12-17 01:52:08 +03:00
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:
@@ -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 ) );
|
||||
|
||||
Reference in New Issue
Block a user