Monero
Loading...
Searching...
No Matches
miniupnpc-libevent.c File Reference
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <net/if.h>
#include <stdio.h>
#include <event2/event.h>
#include <event2/buffer.h>
#include <event2/http.h>
#include <unistd.h>
#include <errno.h>
#include "miniupnpc-libevent.h"
#include "minixml.h"
#include "igd_desc_parse.h"
#include "upnpreplyparse.h"
Include dependency graph for miniupnpc-libevent.c:

Classes

struct  upnp_args

Macros

#define closesocket   close
#define PRINT_SOCKET_ERROR   perror
#define SOCKET_ERROR   errno
#define WOULDBLOCK(err)
#define MIN(x, y)
#define MAXHOSTNAMELEN   64
#define SSDP_PORT   1900
#define SSDP_MCAST_ADDR   "239.255.255.250"
#define XSTR(s)
#define STR(s)
#define debug_printf(...)
#define COMPARE(str, cstr)
#define SOAPPREFIX   "s"
#define SERVICEPREFIX   "u"
#define SERVICEPREFIX2   'u'

Functions

static int upnpc_get_desc (upnpc_device_t *p, const char *url)
static char * build_url_string (const char *urlbase, const char *root_desc_url, const char *controlurl)
static void parse_msearch_reply (const char *reply, int size, const char **location, int *locationsize, const char **st, int *stsize)
static void upnpc_send_ssdp_msearch (evutil_socket_t s, short events, upnpc_t *p)
static int upnpc_set_root_desc_location (upnpc_device_t *d, const char *location, int locationsize)
static upnpc_device_tupnpc_find_device_with_location (upnpc_t *p, const char *location, int locationsize)
static void upnpc_receive_and_parse_ssdp (evutil_socket_t s, short events, upnpc_t *p)
static int parseURL (const char *url, char *hostname, unsigned short *port, char **path, unsigned int *scope_id)
static void upnpc_desc_received (struct evhttp_request *req, void *pvoid)
static void upnpc_soap_response (struct evhttp_request *req, void *pvoid)
static int upnpc_send_soap_request (upnpc_device_t *p, const char *url, const char *service, const char *method, const struct upnp_args *args, int arg_count)
int upnpc_init (upnpc_t *p, struct event_base *base, const char *multicastif, upnpc_callback_fn ready_cb, upnpc_callback_fn soap_cb, void *cb_data)
int upnpc_start (upnpc_t *p)
int upnpc_set_local_address (upnpc_t *p, const char *address, uint16_t port)
static void upnpc_device_finalize (upnpc_device_t *d)
int upnpc_finalize (upnpc_t *p)
int upnpc_get_external_ip_address (upnpc_device_t *p)
int upnpc_get_link_layer_max_rate (upnpc_device_t *p)
int upnpc_delete_port_mapping (upnpc_device_t *p, const char *remote_host, unsigned short ext_port, const char *proto)
int upnpc_add_port_mapping (upnpc_device_t *p, const char *remote_host, unsigned short ext_port, unsigned short int_port, const char *int_client, const char *proto, const char *description, unsigned int lease_duration)
int upnpc_get_status_info (upnpc_device_t *p)

Variables

static const char * devices_to_search []

Macro Definition Documentation

◆ closesocket

#define closesocket   close

◆ COMPARE

#define COMPARE ( str,
cstr )
Value:
(0==memcmp(str, cstr, sizeof(cstr) - 1))
const char *const str
Definition portlistingparse.c:23

◆ debug_printf

#define debug_printf ( ...)
Value:
(void)0

◆ MAXHOSTNAMELEN

#define MAXHOSTNAMELEN   64

◆ MIN

#define MIN ( x,
y )
Value:
(((x)<(y))?(x):(y))

◆ PRINT_SOCKET_ERROR

#define PRINT_SOCKET_ERROR   perror

◆ SERVICEPREFIX

#define SERVICEPREFIX   "u"

◆ SERVICEPREFIX2

#define SERVICEPREFIX2   'u'

◆ SOAPPREFIX

#define SOAPPREFIX   "s"

◆ SOCKET_ERROR

#define SOCKET_ERROR   errno

◆ SSDP_MCAST_ADDR

#define SSDP_MCAST_ADDR   "239.255.255.250"

◆ SSDP_PORT

#define SSDP_PORT   1900

◆ STR

#define STR ( s)
Value:
#s

◆ WOULDBLOCK

#define WOULDBLOCK ( err)
Value:
(err == EAGAIN || err == EWOULDBLOCK)

◆ XSTR

#define XSTR ( s)
Value:
#define s(x, c)
Definition aesb.c:47
#define STR(s)
Definition minissdpd.c:1170

Function Documentation

◆ build_url_string()

char * build_url_string ( const char * urlbase,
const char * root_desc_url,
const char * controlurl )
static

◆ parse_msearch_reply()

void parse_msearch_reply ( const char * reply,
int size,
const char ** location,
int * locationsize,
const char ** st,
int * stsize )
static

◆ parseURL()

int parseURL ( const char * url,
char * hostname,
unsigned short * port,
char ** path,
unsigned int * scope_id )
static

◆ upnpc_add_port_mapping()

int upnpc_add_port_mapping ( upnpc_device_t * p,
const char * remote_host,
unsigned short ext_port,
unsigned short int_port,
const char * int_client,
const char * proto,
const char * description,
unsigned int lease_duration )

◆ upnpc_delete_port_mapping()

int upnpc_delete_port_mapping ( upnpc_device_t * p,
const char * remote_host,
unsigned short ext_port,
const char * proto )

◆ upnpc_desc_received()

void upnpc_desc_received ( struct evhttp_request * req,
void * pvoid )
static

◆ upnpc_device_finalize()

void upnpc_device_finalize ( upnpc_device_t * d)
static

◆ upnpc_finalize()

int upnpc_finalize ( upnpc_t * p)

◆ upnpc_find_device_with_location()

upnpc_device_t * upnpc_find_device_with_location ( upnpc_t * p,
const char * location,
int locationsize )
static

◆ upnpc_get_desc()

int upnpc_get_desc ( upnpc_device_t * p,
const char * url )
static

◆ upnpc_get_external_ip_address()

int upnpc_get_external_ip_address ( upnpc_device_t * p)

◆ upnpc_get_link_layer_max_rate()

int upnpc_get_link_layer_max_rate ( upnpc_device_t * p)

◆ upnpc_get_status_info()

int upnpc_get_status_info ( upnpc_device_t * p)

◆ upnpc_init()

int upnpc_init ( upnpc_t * p,
struct event_base * base,
const char * multicastif,
upnpc_callback_fn ready_cb,
upnpc_callback_fn soap_cb,
void * cb_data )

◆ upnpc_receive_and_parse_ssdp()

void upnpc_receive_and_parse_ssdp ( evutil_socket_t s,
short events,
upnpc_t * p )
static

◆ upnpc_send_soap_request()

int upnpc_send_soap_request ( upnpc_device_t * p,
const char * url,
const char * service,
const char * method,
const struct upnp_args * args,
int arg_count )
static

◆ upnpc_send_ssdp_msearch()

void upnpc_send_ssdp_msearch ( evutil_socket_t s,
short events,
upnpc_t * p )
static

◆ upnpc_set_local_address()

int upnpc_set_local_address ( upnpc_t * p,
const char * address,
uint16_t port )

◆ upnpc_set_root_desc_location()

int upnpc_set_root_desc_location ( upnpc_device_t * d,
const char * location,
int locationsize )
static

◆ upnpc_soap_response()

void upnpc_soap_response ( struct evhttp_request * req,
void * pvoid )
static

◆ upnpc_start()

int upnpc_start ( upnpc_t * p)

Variable Documentation

◆ devices_to_search

const char* devices_to_search[]
static
Initial value:
= {
"urn:schemas-upnp-org:device:InternetGatewayDevice:1",
"urn:schemas-upnp-org:service:WANIPConnection:1",
"urn:schemas-upnp-org:service:WANPPPConnection:1",
"upnp:rootdevice",
0
}