Monero
Classes | Macros | Functions | Variables
miniupnpc-async.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 <unistd.h>
#include <errno.h>
#include "miniupnpc-async.h"
#include "parsessdpreply.h"
#include "upnputils.h"
#include "minixml.h"
#include "igd_desc_parse.h"
#include "upnpreplyparse.h"
Include dependency graph for miniupnpc-async.c:

Classes

struct  upnp_args
 

Macros

#define closesocket   close
 
#define PRINT_SOCKET_ERROR   perror
 
#define SOCKET_ERROR   errno
 
#define WOULDBLOCK(err)   (err == EAGAIN || err == EWOULDBLOCK)
 
#define MIN(x, y)   (((x)<(y))?(x):(y))
 
#define MAXHOSTNAMELEN   64
 
#define SSDP_PORT   1900
 
#define SSDP_MCAST_ADDR   "239.255.255.250"
 
#define XSTR(s)   STR(s)
 
#define STR(s)   #s
 
#define debug_printf(...)
 
#define SOAPPREFIX   "s"
 
#define SERVICEPREFIX   "u"
 
#define SERVICEPREFIX2   'u'
 

Functions

static int upnpc_connect (upnpc_device_t *p, const char *url)
 
static int upnpc_send_request (upnpc_device_t *p)
 
static void parse_msearch_reply (const char *reply, int size, const char **location, unsigned int *locationsize, const char **st, unsigned int *stsize)
 
static int upnpc_send_ssdp_msearch (upnpc_t *p, const char *device, unsigned int mx)
 
static int upnpc_set_root_desc_location (upnpc_device_t *d, const char *location, int locationsize)
 
static int upnpc_receive_and_parse_ssdp (upnpc_t *p)
 
static int parseURL (const char *url, char *hostname, unsigned short *port, char **path, unsigned int *scope_id)
 
static int upnpc_complete_connect (upnpc_device_t *p)
 
static int upnpc_parse_headers (upnpc_device_t *p)
 
static char * build_url_string (const char *urlbase, const char *root_desc_url, const char *controlurl)
 
static int upnpc_get_response (upnpc_device_t *p)
 
static int upnpc_build_soap_request (upnpc_device_t *p, const char *url, const char *service, const char *action, const struct upnp_args *args, int arg_count)
 
int upnpc_init (upnpc_t *p, const char *multicastif)
 
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_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_process (upnpc_t *p)
 

Variables

static const char * devices_to_search []
 

Macro Definition Documentation

◆ closesocket

#define closesocket   close

◆ debug_printf

#define debug_printf (   ...)

◆ MAXHOSTNAMELEN

#define MAXHOSTNAMELEN   64

◆ MIN

#define MIN (   x,
 
)    (((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)    #s

◆ WOULDBLOCK

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

◆ XSTR

#define XSTR (   s)    STR(s)

Function Documentation

◆ build_url_string()

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

◆ parse_msearch_reply()

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

◆ parseURL()

static 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_build_soap_request()

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

◆ upnpc_complete_connect()

static int upnpc_complete_connect ( upnpc_device_t p)
static

◆ upnpc_connect()

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

◆ upnpc_finalize()

int upnpc_finalize ( upnpc_t p)

◆ 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_response()

static int upnpc_get_response ( upnpc_device_t p)
static

◆ upnpc_init()

int upnpc_init ( upnpc_t p,
const char *  multicastif 
)

◆ upnpc_parse_headers()

static int upnpc_parse_headers ( upnpc_device_t p)
static

◆ upnpc_process()

int upnpc_process ( upnpc_t p)

◆ upnpc_receive_and_parse_ssdp()

static int upnpc_receive_and_parse_ssdp ( upnpc_t p)
static

◆ upnpc_send_request()

static int upnpc_send_request ( upnpc_device_t p)
static

◆ upnpc_send_ssdp_msearch()

static int upnpc_send_ssdp_msearch ( upnpc_t p,
const char *  device,
unsigned int  mx 
)
static

◆ upnpc_set_root_desc_location()

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

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
}