david/ipxe
Archived
1
0
This repository has been archived on 2020-12-06. You can view files and clone it, but cannot push or open issues or pull requests.
ipxe/src/include/gpxe/http.h

61 lines
1.1 KiB
C
Raw Normal View History

2006-08-11 16:13:02 +02:00
#ifndef _GPXE_HTTP_H
#define _GPXE_HTTP_H
/** @file
*
* Hyper Text Transport Protocol
*
*/
#include <stdint.h>
#include <gpxe/tcp.h>
#include <gpxe/async.h>
2007-01-12 20:18:13 +01:00
#include <gpxe/linebuf.h>
2006-08-11 16:13:02 +02:00
/** HTTP default port */
#define HTTP_PORT 80
2007-01-12 20:18:13 +01:00
/** HTTP receive state */
enum http_rx_state {
HTTP_RX_RESPONSE = 0,
HTTP_RX_HEADER,
HTTP_RX_DATA,
HTTP_RX_DEAD,
2006-08-11 16:13:02 +02:00
};
/**
2007-01-12 20:18:13 +01:00
* An HTTP request
2006-08-11 16:13:02 +02:00
*
*/
struct http_request {
/** Server address */
struct sockaddr_tcpip server;
2007-01-12 20:18:13 +01:00
/** Server host name */
const char *hostname;
/** Filename */
const char *filename;
/** Data buffer to fill */
struct buffer *buffer;
/** HTTP response code */
unsigned int response;
/** HTTP Content-Length */
size_t content_length;
/** Number of bytes already sent */
size_t tx_offset;
/** RX state */
enum http_rx_state rx_state;
/** Line buffer for received header lines */
struct line_buffer linebuf;
/** TCP application for this request */
struct tcp_application tcp;
2006-08-11 16:13:02 +02:00
/** Asynchronous operation */
struct async_operation aop;
};
2007-01-12 20:18:13 +01:00
extern struct async_operation * http_get ( struct http_request *http );
2006-08-11 16:13:02 +02:00
#endif /* _GPXE_HTTP_H */