Monero
Loading...
Searching...
No Matches
upnpstun.c File Reference
#include <sys/select.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <netdb.h>
#include <stdlib.h>
#include <stdio.h>
#include <syslog.h>
#include <string.h>
#include <errno.h>
#include "config.h"
#include "upnputils.h"
#include "upnpstun.h"
Include dependency graph for upnpstun.c:

Functions

static void generate_transaction_id (unsigned char transaction_id[12])
static void fill_request (unsigned char buffer[28], int change_ip, int change_port)
static int resolve_stun_host (const char *stun_host, unsigned short stun_port, struct sockaddr_in *sock_addr)
static int stun_socket (unsigned short *local_port)
static size_t receive_stun_response (int fd, unsigned char *buffer, unsigned char transaction_id[12], size_t buffer_len, struct sockaddr_in *peer_addr)
static int wait_for_stun_responses (int fds[4], unsigned char *transaction_ids[4], unsigned char *buffers[4], size_t buffers_lens[4], struct sockaddr_in peer_addrs[4], size_t lens[4])
static int parse_stun_response (unsigned char *buffer, size_t len, struct sockaddr_in *mapped_addr)
int perform_stun (const char *if_name, const char *if_addr, const char *stun_host, unsigned short stun_port, struct in_addr *ext_addr, int *restrictive_nat)

Function Documentation

◆ fill_request()

void fill_request ( unsigned char buffer[28],
int change_ip,
int change_port )
static

◆ generate_transaction_id()

void generate_transaction_id ( unsigned char transaction_id[12])
static

◆ parse_stun_response()

int parse_stun_response ( unsigned char * buffer,
size_t len,
struct sockaddr_in * mapped_addr )
static

◆ perform_stun()

int perform_stun ( const char * if_name,
const char * if_addr,
const char * stun_host,
unsigned short stun_port,
struct in_addr * ext_addr,
int * restrictive_nat )

◆ receive_stun_response()

size_t receive_stun_response ( int fd,
unsigned char * buffer,
unsigned char transaction_id[12],
size_t buffer_len,
struct sockaddr_in * peer_addr )
static

◆ resolve_stun_host()

int resolve_stun_host ( const char * stun_host,
unsigned short stun_port,
struct sockaddr_in * sock_addr )
static

◆ stun_socket()

int stun_socket ( unsigned short * local_port)
static

◆ wait_for_stun_responses()

int wait_for_stun_responses ( int fds[4],
unsigned char * transaction_ids[4],
unsigned char * buffers[4],
size_t buffers_lens[4],
struct sockaddr_in peer_addrs[4],
size_t lens[4] )
static