File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / miniupnpd / upnphttp.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:16:02 2012 UTC (12 years, 4 months ago) by misho
Branches: miniupnpd, elwix, MAIN
CVS tags: v1_5, HEAD
miniupnpd

    1: /* $Id: upnphttp.h,v 1.1.1.1 2012/02/21 23:16:02 misho Exp $ */ 
    2: /* MiniUPnP project
    3:  * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
    4:  * (c) 2006-2011 Thomas Bernard 
    5:  * This software is subject to the conditions detailed
    6:  * in the LICENCE file provided within the distribution */
    7: 
    8: #ifndef __UPNPHTTP_H__
    9: #define __UPNPHTTP_H__
   10: 
   11: #include <netinet/in.h>
   12: #include <sys/queue.h>
   13: 
   14: #include "config.h"
   15: 
   16: /* server: HTTP header returned in all HTTP responses : */
   17: #define MINIUPNPD_SERVER_STRING	OS_VERSION " UPnP/1.0 MiniUPnPd/1.5"
   18: 
   19: /*
   20:  states :
   21:   0 - waiting for data to read
   22:   1 - waiting for HTTP Post Content.
   23:   ...
   24:   >= 100 - to be deleted
   25: */
   26: enum httpCommands {
   27: 	EUnknown = 0,
   28: 	EGet,
   29: 	EPost,
   30: 	ESubscribe,
   31: 	EUnSubscribe
   32: };
   33: 
   34: struct upnphttp {
   35: 	int socket;
   36: 	struct in_addr clientaddr;	/* client address */
   37: 	int state;
   38: 	char HttpVer[16];
   39: 	/* request */
   40: 	char * req_buf;
   41: 	int req_buflen;
   42: 	int req_contentlen;
   43: 	int req_contentoff;     /* header length */
   44: 	enum httpCommands req_command;
   45: 	const char * req_soapAction;
   46: 	int req_soapActionLen;
   47: #ifdef ENABLE_EVENTS
   48: 	const char * req_Callback;	/* For SUBSCRIBE */
   49: 	int req_CallbackLen;
   50: 	int req_Timeout;
   51: 	const char * req_SID;		/* For UNSUBSCRIBE */
   52: 	int req_SIDLen;
   53: #endif
   54: 	int respflags;
   55: 	/* response */
   56: 	char * res_buf;
   57: 	int res_buflen;
   58: 	int res_buf_alloclen;
   59: 	/*int res_contentlen;*/
   60: 	/*int res_contentoff;*/		/* header length */
   61: 	LIST_ENTRY(upnphttp) entries;
   62: };
   63: 
   64: #define FLAG_TIMEOUT	0x01
   65: #define FLAG_SID		0x02
   66: 
   67: #define FLAG_HTML		0x80
   68: 
   69: /* New_upnphttp() */
   70: struct upnphttp *
   71: New_upnphttp(int);
   72: 
   73: /* CloseSocket_upnphttp() */
   74: void
   75: CloseSocket_upnphttp(struct upnphttp *);
   76: 
   77: /* Delete_upnphttp() */
   78: void
   79: Delete_upnphttp(struct upnphttp *);
   80: 
   81: /* Process_upnphttp() */
   82: void
   83: Process_upnphttp(struct upnphttp *);
   84: 
   85: /* BuildHeader_upnphttp()
   86:  * build the header for the HTTP Response
   87:  * also allocate the buffer for body data */
   88: void
   89: BuildHeader_upnphttp(struct upnphttp * h, int respcode,
   90:                      const char * respmsg,
   91:                      int bodylen);
   92: 
   93: /* BuildResp_upnphttp() 
   94:  * fill the res_buf buffer with the complete
   95:  * HTTP 200 OK response from the body passed as argument */
   96: void
   97: BuildResp_upnphttp(struct upnphttp *, const char *, int);
   98: 
   99: /* BuildResp2_upnphttp()
  100:  * same but with given response code/message */
  101: void
  102: BuildResp2_upnphttp(struct upnphttp * h, int respcode,
  103:                     const char * respmsg,
  104:                     const char * body, int bodylen);
  105: 
  106: /* SendResp_upnphttp() */
  107: void
  108: SendResp_upnphttp(struct upnphttp *);
  109: 
  110: #endif
  111: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>