http_server.h revision 8d520ff1dc2da35cdca849e982051b86468016d8
11e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)/*
21e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) * http_server - HTTP server
31e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) * Copyright (c) 2009, Jouni Malinen <j@w1.fi>
41e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) *
51e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) * This program is free software; you can redistribute it and/or modify
61e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) * it under the terms of the GNU General Public License version 2 as
71e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) * published by the Free Software Foundation.
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) *
91e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) * Alternatively, this software may be distributed under the terms of BSD
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * license.
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) *
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * See README and COPYING for more details.
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */
141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#ifndef HTTP_SERVER_H
161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#define HTTP_SERVER_H
171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)struct http_server;
1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)struct http_request;
206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void http_request_deinit(struct http_request *req);
221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void http_request_send(struct http_request *req, struct wpabuf *resp);
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void http_request_send_and_deinit(struct http_request *req,
241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)				  struct wpabuf *resp);
251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)enum httpread_hdr_type http_request_get_type(struct http_request *req);
261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)char * http_request_get_uri(struct http_request *req);
271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)char * http_request_get_hdr(struct http_request *req);
281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)char * http_request_get_data(struct http_request *req);
291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)char * http_request_get_hdr_line(struct http_request *req, const char *tag);
301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)struct sockaddr_in * http_request_get_cli_addr(struct http_request *req);
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct http_server * http_server_init(struct in_addr *addr, int port,
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)				      void (*cb)(void *ctx,
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)						 struct http_request *req),
35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch				      void *cb_ctx);
36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochvoid http_server_deinit(struct http_server *srv);
37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochint http_server_get_port(struct http_server *srv);
386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#endif /* HTTP_SERVER_H */
406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)