From 9dc6a1e6789cd8a4cc3c7e88a4da96d95d60ddf6 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 9 Jul 2007 03:53:06 +0100 Subject: [PATCH] Remove some obsolete stream-API files --- src/include/gpxe/filter.h | 47 ----- src/include/gpxe/stream.h | 190 -------------------- src/include/gpxe/tcp.h | 1 - src/net/filter.c | 191 --------------------- src/net/stream.c | 352 -------------------------------------- 5 files changed, 781 deletions(-) delete mode 100644 src/include/gpxe/filter.h delete mode 100644 src/include/gpxe/stream.h delete mode 100644 src/net/filter.c delete mode 100644 src/net/stream.c diff --git a/src/include/gpxe/filter.h b/src/include/gpxe/filter.h deleted file mode 100644 index 285d3ea9..00000000 --- a/src/include/gpxe/filter.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef _GPXE_FILTER_H -#define _GPXE_FILTER_H - -/** @file - * - * Filter streams - */ - -#include - -/** A filter stream */ -struct filter_stream { - /** Downstream - * - * This is the end pointing towards the bottom-level - * connection (e.g. TCP). - */ - struct stream_application downstream; - /** Upstream - * - * This is the end pointing towards the top-level application - * (e.g. HTTP). - */ - struct stream_connection upstream; -}; - -extern void filter_connected ( struct stream_application *app ); -extern void filter_closed ( struct stream_application *app, int rc ); -extern void filter_senddata ( struct stream_application *app, - void *data, size_t len ); -extern void filter_acked ( struct stream_application *app, size_t len ); -extern void filter_newdata ( struct stream_application *app, - void *data, size_t len ); - -extern int filter_bind ( struct stream_connection *conn, - struct sockaddr *local ); -extern int filter_connect ( struct stream_connection *conn, - struct sockaddr *peer ); -extern void filter_close ( struct stream_connection *conn ); -extern int filter_send ( struct stream_connection *conn, - void *data, size_t len ); -extern int filter_kick ( struct stream_connection *conn ); - -extern int insert_filter ( struct stream_application *app, - struct filter_stream *filter ); - -#endif /* _GPXE_FILTER_H */ diff --git a/src/include/gpxe/stream.h b/src/include/gpxe/stream.h deleted file mode 100644 index 545bfae7..00000000 --- a/src/include/gpxe/stream.h +++ /dev/null @@ -1,190 +0,0 @@ -#ifndef _GPXE_STREAM_H -#define _GPXE_STREAM_H - -/** @file - * - * Stream API - */ - -#include -#include - -struct stream_application; -struct stream_connection; - -/** Stream applicatin-layer operations */ -struct stream_application_operations { - /** - * Connection established - * - * @v app Stream application - */ - void ( * connected ) ( struct stream_application *app ); - /** - * Connection closed - * - * @v app Stream application - * @v rc Error code, if any - * - * This is called when the connection is closed for any - * reason, including timeouts or aborts. The error code - * contains the negative error number, if the closure is due - * to an error, or zero for a normal close. - * - * When closed() is called, the application no longer has a - * valid stream connection. Note that connected() may not - * have been called before closed(), if the close is due to an - * error during connection setup. - */ - void ( * closed ) ( struct stream_application *app, int rc ); - /** - * Transmit data - * - * @v app Stream application - * @v data Temporary data buffer - * @v len Length of temporary data buffer - * - * The application should transmit whatever it currently wants - * to send using stream_send(). If retransmissions are - * required, senddata() will be called again and the - * application must regenerate the data. The easiest way to - * implement this is to ensure that senddata() never changes - * the application's state. - * - * The application may use the temporary data buffer to - * construct the data to be sent. Note that merely filling - * the buffer will do nothing; the application must call - * stream_send() in order to actually transmit the data. Use - * of the buffer is not compulsory; the application may call - * stream_send() on any block of data. - */ - void ( * senddata ) ( struct stream_application *app, - void *data, size_t len ); - /** - * Transmitted data acknowledged - * - * @v app Stream application - * @v len Length of acknowledged data - * - * @c len is guaranteed to not exceed the outstanding amount - * of unacknowledged data. - */ - void ( * acked ) ( struct stream_application *app, size_t len ); - /** - * Receive new data - * - * @v app Stream application - * @v data Data - * @v len Length of data - */ - void ( * newdata ) ( struct stream_application *app, - void *data, size_t len ); -}; - -/** Stream connection-layer operations */ -struct stream_connection_operations { - /** - * Bind to local address - * - * @v conn Stream connection - * @v local Local address - * @ret rc Return status code - */ - int ( * bind ) ( struct stream_connection *conn, - struct sockaddr *local ); - /** - * Connect to remote address - * - * @v conn Stream connection - * @v peer Remote address - * @ret rc Return status code - * - * This initiates the connection. If the connection succeeds, - * the application's connected() method will be called. If - * the connection fails (e.g. due to a timeout), the - * application's closed() method will be called with an - * appropriate error code. - */ - int ( * connect ) ( struct stream_connection *conn, - struct sockaddr *peer ); - /** - * Close connection - * - * @v conn Stream connection - */ - void ( * close ) ( struct stream_connection *conn ); - /** - * Send data via connection - * - * @v conn Stream connection - * @v data Data to send - * @v len Length of data - * @ret rc Return status code - * - * This method should be called only in the context of an - * application's senddata() method. - */ - int ( * send ) ( struct stream_connection *conn, - const void *data, size_t len ); - /** - * Notify connection that data is available to send - * - * @v conn Stream connection - * @ret rc Return status code - * - * This will cause the connection to call the application's - * senddata() method. It should be called when the - * application acquires new data to send as a result of - * something external to the data stream (e.g. when iSCSI is - * asked to issue a new command on an otherwise-idle - * connection). Most applications will not need to call this - * method. - */ - int ( * kick ) ( struct stream_connection *conn ); -}; - -/** A stream application */ -struct stream_application { - /** Stream connection, if any - * - * This will be NULL if the stream does not currently have a - * valid connection. - */ - struct stream_connection *conn; - /** Stream application-layer operations */ - struct stream_application_operations *op; -}; - -/** A stream connection */ -struct stream_connection { - /** Stream application, if any - * - * This will be NULL if the stream does not currently have a - * valid application. - */ - struct stream_application *app; - /** Stream connection-layer operations */ - struct stream_connection_operations *op; -}; - -extern void stream_associate ( struct stream_application *app, - struct stream_connection *conn ); - -extern void stream_connected ( struct stream_connection *conn ); -extern void stream_closed ( struct stream_connection *conn, int rc ); -extern void stream_senddata ( struct stream_connection *conn, - void *data, size_t len ); -extern void stream_acked ( struct stream_connection *conn, size_t len ); -extern void stream_newdata ( struct stream_connection *conn, - void *data, size_t len ); - -extern int stream_bind ( struct stream_application *app, - struct sockaddr *local ); -extern int stream_connect ( struct stream_application *app, - struct sockaddr *peer ); -extern void stream_close ( struct stream_application *app ); -extern int stream_send ( struct stream_application *app, - const void *data, size_t len ); -extern int stream_kick ( struct stream_application *app ); - -#endif /* _GPXE_STREAM_H */ diff --git a/src/include/gpxe/tcp.h b/src/include/gpxe/tcp.h index 9bf48cfa..d927d241 100644 --- a/src/include/gpxe/tcp.h +++ b/src/include/gpxe/tcp.h @@ -11,7 +11,6 @@ #include "latch.h" #include -#include /** * A TCP header diff --git a/src/net/filter.c b/src/net/filter.c deleted file mode 100644 index 925aad21..00000000 --- a/src/net/filter.c +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright (C) 2007 Michael Brown . - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -/** - * @file - * - * Filter streams - */ - -#include -#include -#include -#include - -/** - * Connection established - * - * @v app Stream application - */ -void filter_connected ( struct stream_application *app ) { - struct filter_stream *filter = - container_of ( app, struct filter_stream, downstream ); - - stream_connected ( &filter->upstream ); -} - -/** - * Connection closed - * - * @v app Stream application - * @v rc Error code, if any - */ -void filter_closed ( struct stream_application *app, int rc ) { - struct filter_stream *filter = - container_of ( app, struct filter_stream, downstream ); - - stream_closed ( &filter->upstream, rc ); -} - -/** - * Transmit data - * - * @v app Stream application - * @v buf Temporary data buffer - * @v len Length of temporary data buffer - */ -void filter_senddata ( struct stream_application *app, - void *data, size_t len ) { - struct filter_stream *filter = - container_of ( app, struct filter_stream, downstream ); - - stream_senddata ( &filter->upstream, data, len ); -} - -/** - * Transmitted data acknowledged - * - * @v app Stream application - * @v len Length of acknowledged data - */ -void filter_acked ( struct stream_application *app, size_t len ) { - struct filter_stream *filter = - container_of ( app, struct filter_stream, downstream ); - - stream_acked ( &filter->upstream, len ); -} - -/** - * Receive new data - * - * @v app Stream application - * @v data Data - * @v len Length of data - */ -void filter_newdata ( struct stream_application *app, - void *data, size_t len ) { - struct filter_stream *filter = - container_of ( app, struct filter_stream, downstream ); - - stream_newdata ( &filter->upstream, data, len ); -} - -/** - * Bind to local address - * - * @v conn Stream connection - * @v local Local address - * @ret rc Return status code - */ -int filter_bind ( struct stream_connection *conn, struct sockaddr *local ) { - struct filter_stream *filter = - container_of ( conn, struct filter_stream, upstream ); - - return stream_bind ( &filter->downstream, local ); -} - -/** - * Connect to remote address - * - * @v conn Stream connection - * @v peer Remote address - * @ret rc Return status code - */ -int filter_connect ( struct stream_connection *conn, struct sockaddr *peer ) { - struct filter_stream *filter = - container_of ( conn, struct filter_stream, upstream ); - - return stream_connect ( &filter->downstream, peer ); -} - -/** - * Close connection - * - * @v conn Stream connection - */ -void filter_close ( struct stream_connection *conn ) { - struct filter_stream *filter = - container_of ( conn, struct filter_stream, upstream ); - - stream_close ( &filter->downstream ); -} - -/** - * Send data via connection - * - * @v conn Stream connection - * @v data Data to send - * @v len Length of data - * @ret rc Return status code - */ -int filter_send ( struct stream_connection *conn, void *data, size_t len ) { - struct filter_stream *filter = - container_of ( conn, struct filter_stream, upstream ); - - return stream_send ( &filter->downstream, data, len ); -} - -/** - * Notify connection that data is available to send - * - * @v conn Stream connection - * @ret rc Return status code - */ -int filter_kick ( struct stream_connection *conn ) { - struct filter_stream *filter = - container_of ( conn, struct filter_stream, upstream ); - - return stream_kick ( &filter->downstream ); -} - -/** - * Insert filter into stream - * - * @v app Stream application - * @v filter Filter stream - * @ret rc Return status code - */ -int insert_filter ( struct stream_application *app, - struct filter_stream *filter ) { - struct stream_connection *conn = app->conn; - - if ( ! conn ) { - DBGC ( filter, "Filter %p cannot insert onto closed stream\n", - filter ); - return -ENOTCONN; - } - - DBGC ( filter, "Filter %p inserted on stream %p\n", filter, app ); - - filter->upstream.app = app; - filter->downstream.conn = conn; - app->conn = &filter->upstream; - conn->app = &filter->downstream; - - return 0; -} diff --git a/src/net/stream.c b/src/net/stream.c deleted file mode 100644 index 86fb3066..00000000 --- a/src/net/stream.c +++ /dev/null @@ -1,352 +0,0 @@ -/* - * Copyright (C) 2007 Michael Brown . - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -/** - * @file - * - * Stream API - */ - -#include -#include -#include -#include -#include - -/** - * Associate application with connection - * - * @v app Stream application - * @v conn Stream connection - */ -void stream_associate ( struct stream_application *app, - struct stream_connection *conn ) { - - DBGC ( app, "Stream %p associating with connection %p\n", app, conn ); - - assert ( conn->app == NULL ); - assert ( app->conn == NULL ); - conn->app = app; - app->conn = conn; -} - -/** - * Disassociate application from connection - * - * @v app Stream application - * @v conn Stream connection - */ -static void stream_disassociate ( struct stream_application *app, - struct stream_connection *conn ) { - - DBGC ( app, "Stream %p disassociating from connection %p\n", - app, conn ); - - assert ( conn->app == app ); - assert ( app->conn == conn ); - conn->app = NULL; - app->conn = NULL; -} - -/** - * Connection established - * - * @v conn Stream connection - */ -void stream_connected ( struct stream_connection *conn ) { - struct stream_application *app = conn->app; - - DBGC ( app, "Stream %p connected\n", app ); - - /* Check connection actually exists */ - if ( ! app ) { - DBGC ( conn, "Stream connection %p has no application\n", - conn ); - return; - } - - /* Hand off to application */ - if ( app->op->connected ) - app->op->connected ( app ); -} - -/** - * Connection closed - * - * @v conn Stream connection - * @v rc Error code, if any - */ -void stream_closed ( struct stream_connection *conn, int rc ) { - struct stream_application *app = conn->app; - - /* Check connection actually exists */ - if ( ! app ) { - /* Not an error; don't display a debug message */ - return; - } - - DBGC ( app, "Stream %p closed (%s)\n", app, strerror ( rc ) ); - - /* Disassociate application from connection */ - stream_disassociate ( app, conn ); - - /* Hand off to application */ - if ( app->op->closed ) - app->op->closed ( app, rc ); -} - -/** - * Transmit data - * - * @v conn Stream connection - * @v data Temporary data buffer - * @v len Length of temporary data buffer - */ -void stream_senddata ( struct stream_connection *conn, - void *data, size_t len ) { - struct stream_application *app = conn->app; - - DBGC2 ( app, "Stream %p sending data\n", app ); - - /* Check connection actually exists */ - if ( ! app ) { - DBGC ( conn, "Stream connection %p has no application\n", - conn ); - return; - } - - /* Hand off to application */ - if ( app->op->senddata ) - app->op->senddata ( app, data, len ); -} - -/** - * Transmitted data acknowledged - * - * @v conn Stream connection - * @v len Length of acknowledged data - * - * @c len must not exceed the outstanding amount of unacknowledged - * data. - */ -void stream_acked ( struct stream_connection *conn, size_t len ) { - struct stream_application *app = conn->app; - - DBGC2 ( app, "Stream %p had %zd bytes acknowledged\n", app, len ); - - /* Check connection actually exists */ - if ( ! app ) { - DBGC ( conn, "Stream connection %p has no application\n", - conn ); - return; - } - - /* Ignore zero-length blocks */ - if ( len == 0 ) - return; - - /* Hand off to application */ - if ( app->op->acked ) - app->op->acked ( app, len ); -} - -/** - * Receive new data - * - * @v conn Stream connection - * @v data Data - * @v len Length of data - */ -void stream_newdata ( struct stream_connection *conn, - void *data, size_t len ) { - struct stream_application *app = conn->app; - - DBGC2 ( app, "Stream %p received %zd bytes\n", app, len ); - - /* Check connection actually exists */ - if ( ! app ) { - DBGC ( conn, "Stream connection %p has no application\n", - conn ); - return; - } - - /* Ignore zero-length blocks */ - if ( len == 0 ) - return; - - /* Hand off to application */ - if ( app->op->newdata ) - app->op->newdata ( app, data, len ); -} - -/** - * Bind to local address - * - * @v app Stream application - * @v local Local address - * @ret rc Return status code - */ -int stream_bind ( struct stream_application *app, struct sockaddr *local ) { - struct stream_connection *conn = app->conn; - int rc; - - DBGC2 ( app, "Stream %p binding\n", app ); - - /* Check connection actually exists */ - if ( ! conn ) { - DBGC ( app, "Stream %p has no connection\n", app ); - return -ENOTCONN; - } - - /* Hand off to connection */ - if ( ! conn->op->bind ) - return -ENOTSUP; - if ( ( rc = conn->op->bind ( conn, local ) ) != 0 ) { - DBGC ( app, "Stream %p failed to bind: %s\n", - app, strerror ( rc ) ); - return rc; - } - - return 0; -} - -/** - * Connect to remote address - * - * @v app Stream application - * @v peer Remote address - * @ret rc Return status code - */ -int stream_connect ( struct stream_application *app, struct sockaddr *peer ) { - struct stream_connection *conn = app->conn; - int rc; - - DBGC2 ( app, "Stream %p connecting\n", app ); - - /* Check connection actually exists */ - if ( ! conn ) { - DBGC ( app, "Stream %p has no connection\n", app ); - return -ENOTCONN; - } - - /* Hand off to connection */ - if ( ! conn->op->connect ) - return -ENOTSUP; - if ( ( rc = conn->op->connect ( conn, peer ) ) != 0 ) { - DBGC ( app, "Stream %p failed to connect: %s\n", - app, strerror ( rc ) ); - return rc; - } - - return 0; -} - -/** - * Close connection - * - * @v app Stream application - */ -void stream_close ( struct stream_application *app ) { - struct stream_connection *conn = app->conn; - - DBGC2 ( app, "Stream %p closing\n", app ); - - /* Check connection actually exists */ - if ( ! conn ) { - /* Not an error; don't display a debug message */ - return; - } - - /* Disassociate application from connection */ - stream_disassociate ( app, conn ); - - /* Hand off to connection */ - if ( ! conn->op->close ) - return; - conn->op->close ( conn ); -} - -/** - * Send data via connection - * - * @v app Stream application - * @v data Data to send - * @v len Length of data - * @ret rc Return status code - * - * This method should be called only in the context of an - * application's senddata() method. - */ -int stream_send ( struct stream_application *app, - const void *data, size_t len ) { - struct stream_connection *conn = app->conn; - int rc; - - DBGC2 ( app, "Stream %p sending %zd bytes\n", app, len ); - - /* Check connection actually exists */ - if ( ! conn ) { - DBGC ( app, "Stream %p has no connection\n", app ); - return -ENOTCONN; - } - - /* Ignore zero-length blocks */ - if ( len == 0 ) - return 0; - - /* Hand off to connection */ - if ( ! conn->op->send ) - return -ENOTSUP; - if ( ( rc = conn->op->send ( conn, data, len ) ) != 0 ) { - DBGC ( app, "Stream %p failed to send %zd bytes: %s\n", - app, len, strerror ( rc ) ); - return rc; - } - - return 0; -} - -/** - * Notify connection that data is available to send - * - * @v app Stream application - * @ret rc Return status code - */ -int stream_kick ( struct stream_application *app ) { - struct stream_connection *conn = app->conn; - int rc; - - DBGC2 ( app, "Stream %p kicking connection\n", app ); - - /* Check connection actually exists */ - if ( ! conn ) { - DBGC ( app, "Stream %p has no connection\n", app ); - return -ENOTCONN; - } - - /* Hand off to connection */ - if ( ! conn->op->send ) - return -ENOTSUP; - if ( ( rc = conn->op->kick ( conn ) ) != 0 ) { - DBGC ( app, "Stream %p failed to kick connection: %s\n", - app, strerror ( rc ) ); - return rc; - } - - return 0; -}