Add HTTPS port
[people/xl0/gpxe.git] / src / include / gpxe / http.h
1 #ifndef _GPXE_HTTP_H
2 #define _GPXE_HTTP_H
3
4 /** @file
5  *
6  * Hyper Text Transport Protocol
7  *
8  */
9
10 #include <stdint.h>
11 #include <gpxe/stream.h>
12 #include <gpxe/async.h>
13 #include <gpxe/linebuf.h>
14 #include <gpxe/uri.h>
15
16 /** HTTP default port */
17 #define HTTP_PORT 80
18
19 /** HTTPS default port */
20 #define HTTPS_PORT 443
21
22 /** HTTP receive state */
23 enum http_rx_state {
24         HTTP_RX_RESPONSE = 0,
25         HTTP_RX_HEADER,
26         HTTP_RX_DATA,
27         HTTP_RX_DEAD,
28 };
29
30 /**
31  * An HTTP request
32  *
33  */
34 struct http_request {
35         /** URI being fetched */
36         struct uri *uri;
37         /** Data buffer to fill */
38         struct buffer *buffer;
39         /** Asynchronous operation */
40         struct async async;
41
42         /** HTTP response code */
43         unsigned int response;
44         /** HTTP Content-Length */
45         size_t content_length;
46
47         /** Server address */
48         struct sockaddr server;
49         /** Stream application for this request */
50         struct stream_application stream;
51         /** Number of bytes already sent */
52         size_t tx_offset;
53         /** RX state */
54         enum http_rx_state rx_state;
55         /** Line buffer for received header lines */
56         struct line_buffer linebuf;
57 };
58
59 extern int http_get ( struct uri *uri, struct buffer *buffer,
60                       struct async *parent );
61
62 #endif /* _GPXE_HTTP_H */