Annotation of embedaddon/miniupnpd/miniupnpc-libevent/miniupnpc-libevent.h, revision 1.1.1.1

1.1       misho       1: /* $Id: miniupnpc-libevent.h,v 1.13 2015/07/22 13:48:37 nanard Exp $ */
                      2: /* miniupnpc-libevent
                      3:  * Copyright (c) 2008-2015, Thomas BERNARD <miniupnp@free.fr>
                      4:  * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
                      5:  *
                      6:  * Permission to use, copy, modify, and/or distribute this software for any
                      7:  * purpose with or without fee is hereby granted, provided that the above
                      8:  * copyright notice and this permission notice appear in all copies.
                      9:  *
                     10:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                     11:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                     12:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
                     13:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     14:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                     15:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
                     16:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
                     17: #ifndef MINIUPNPC_LIBEVENT_H_INCLUDED
                     18: #define MINIUPNPC_LIBEVENT_H_INCLUDED
                     19: 
                     20: #include <event2/event.h>
                     21: 
                     22: #include "declspec.h"
                     23: #include "upnpreplyparse.h"
                     24: 
                     25: #ifdef __cplusplus
                     26: extern "C" {
                     27: #endif
                     28: 
                     29: #define MINIUPNPC_LIBEVENT_API_VERSION 1
                     30: 
                     31: #define UPNPC_OK 0
                     32: #define UPNPC_ERR_INVALID_ARGS (-1)
                     33: #define UPNPC_ERR_SOCKET_FAILED (-2)
                     34: #define UPNPC_ERR_BIND_FAILED (-3)
                     35: #define UPNPC_ERR_REQ_IN_PROGRESS (-4)
                     36: 
                     37: #define UPNPC_ERR_NO_DEVICE_FOUND (-100)
                     38: #define UPNPC_ERR_ROOT_DESC_ERROR (-101)
                     39: #define UPNPC_ERR_NOT_IGD         (-102)
                     40: #define UPNPC_ERR_NOT_CONNECTED   (-103)
                     41: 
                     42: /* device->state masks */
                     43: #define UPNPC_DEVICE_SOAP_REQ  (0x0001)
                     44: #define UPNPC_DEVICE_GETSTATUS (0x0002)
                     45: #define UPNPC_DEVICE_CONNECTED (0x4000)
                     46: #define UPNPC_DEVICE_READY     (0x8000)
                     47: 
                     48: typedef struct upnpc_device upnpc_device_t;
                     49: typedef struct upnpc upnpc_t;
                     50: 
                     51: typedef void(* upnpc_callback_fn)(int, upnpc_t *, upnpc_device_t *, void *);
                     52: #ifdef ENABLE_UPNP_EVENTS
                     53: typedef void(* upnpc_event_callback_fn)(upnpc_t *, upnpc_device_t *, void *, const char *, const char *, const char *);
                     54: #endif /* ENABLE_UPNP_EVENTS */
                     55: 
                     56: struct upnpc_device {
                     57:        upnpc_t * parent;
                     58:        upnpc_device_t * next;
                     59:        char * root_desc_location;
                     60:        struct evhttp_connection * desc_conn;
                     61:        char * control_cif_url;
                     62:        char * event_cif_url;
                     63:        char * cif_service_type;
                     64:        char * control_conn_url;
                     65:        char * event_conn_url;
                     66:        char * conn_service_type;
                     67:        struct evhttp_connection * soap_conn;
                     68:        struct NameValueParserData soap_response_data;
                     69:        unsigned int state;
                     70: #ifdef ENABLE_UPNP_EVENTS
                     71:        char * event_conn_sid;
                     72: #endif /* ENABLE_UPNP_EVENTS */
                     73: };
                     74: 
                     75: struct upnpc {
                     76:        struct event_base * base;
                     77:        evutil_socket_t ssdp_socket;
                     78:        struct event * ev_ssdp_recv;
                     79:        struct event * ev_ssdp_writable;
                     80:        int discover_device_index;
                     81:        upnpc_device_t * devices;
                     82:        upnpc_callback_fn ready_cb;
                     83:        upnpc_callback_fn soap_cb;
                     84:        void * cb_data;
                     85: #ifdef ENABLE_UPNP_EVENTS
                     86:        struct evhttp * http_server;
                     87:        upnpc_event_callback_fn value_changed_cb;
                     88: #endif /* ENABLE_UPNP_EVENTS */
                     89:        char * local_address;
                     90:        uint16_t local_port;
                     91:        unsigned char ttl;
                     92: };
                     93: 
                     94: int upnpc_init(upnpc_t * p, struct event_base * base, const char * multicastif,
                     95:                upnpc_callback_fn ready_cb, upnpc_callback_fn soap_cb, void * cb_data);
                     96: 
                     97: int upnpc_set_local_address(upnpc_t * p, const char * address, uint16_t port);
                     98: 
                     99: #ifdef ENABLE_UPNP_EVENTS
                    100: int upnpc_set_event_callback(upnpc_t * p, upnpc_event_callback_fn cb);
                    101: #endif /* ENABLE_UPNP_EVENTS */
                    102: 
                    103: int upnpc_start(upnpc_t * p);
                    104: 
                    105: int upnpc_finalize(upnpc_t * p);
                    106: 
                    107: #ifdef ENABLE_UPNP_EVENTS
                    108: int upnpc_event_subscribe(upnpc_device_t * p);
                    109: #endif /* ENABLE_UPNP_EVENTS */
                    110: 
                    111: int upnpc_get_external_ip_address(upnpc_device_t * p);
                    112: 
                    113: int upnpc_get_link_layer_max_rate(upnpc_device_t * p);
                    114: 
                    115: int upnpc_add_port_mapping(upnpc_device_t * p,
                    116:                            const char * remote_host, unsigned short ext_port,
                    117:                            unsigned short int_port, const char * int_client,
                    118:                            const char * proto, const char * description,
                    119:                            unsigned int lease_duration);
                    120: 
                    121: int upnpc_delete_port_mapping(upnpc_device_t * p,
                    122:                               const char * remote_host, unsigned short ext_port,
                    123:                               const char * proto);
                    124: 
                    125: int upnpc_get_status_info(upnpc_device_t * p);
                    126: 
                    127: #ifdef __cplusplus
                    128: }
                    129: #endif
                    130: 
                    131: #endif /* MINIUPNPC_LIBEVENT_H_INCLUDED */
                    132: 

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