Annotation of embedaddon/miniupnpd/miniupnpc-libevent/miniupnpc-libevent.h, revision 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>