18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * http_server - HTTP server
38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2009, Jouni Malinen <j@w1.fi>
48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details.
78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */
88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef HTTP_SERVER_H
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define HTTP_SERVER_H
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct http_server;
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct http_request;
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid http_request_deinit(struct http_request *req);
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid http_request_send(struct http_request *req, struct wpabuf *resp);
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid http_request_send_and_deinit(struct http_request *req,
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				  struct wpabuf *resp);
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtenum httpread_hdr_type http_request_get_type(struct http_request *req);
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtchar * http_request_get_uri(struct http_request *req);
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtchar * http_request_get_hdr(struct http_request *req);
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtchar * http_request_get_data(struct http_request *req);
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtchar * http_request_get_hdr_line(struct http_request *req, const char *tag);
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct sockaddr_in * http_request_get_cli_addr(struct http_request *req);
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct http_server * http_server_init(struct in_addr *addr, int port,
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				      void (*cb)(void *ctx,
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt						 struct http_request *req),
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				      void *cb_ctx);
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid http_server_deinit(struct http_server *srv);
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint http_server_get_port(struct http_server *srv);
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* HTTP_SERVER_H */
34