From 79f4f70de1a6014d53b245b8069c833ce943f943 Mon Sep 17 00:00:00 2001 From: Chris Hiszpanski Date: Fri, 23 Apr 2021 11:17:03 -0400 Subject: Update inline license blocks and expand tabs --- include/stun.h | 134 --------------------------------------------------------- 1 file changed, 134 deletions(-) delete mode 100644 include/stun.h (limited to 'include/stun.h') diff --git a/include/stun.h b/include/stun.h deleted file mode 100644 index 126e7f5..0000000 --- a/include/stun.h +++ /dev/null @@ -1,134 +0,0 @@ -/* - * liburtc - * Copyright (C) 2019 Chris Hiszpanski - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef URTC_STUN_H -#define URTC_STUN_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define SIZEOF_STUN_HDR 20 - -// STUN Classes -#define STUN_CLASS_REQUEST 0 -#define STUN_CLASS_INDICTATION 1 -#define STUN_CLASS_SUCCESS 2 -#define STUN_CLASS_ERROR 3 - -// STUN Methods -#define STUN_METHOD_RESERVED 0 -#define STUN_METHOD_BINDING 1 - - -///////////////////////////// TYPE DEFINITIONS ///////////////////////////// - -typedef struct { - int rc; // Retransmission count - int rto; // Retransmission timeout (in ms) - int sockfd; // Socket file descriptor -} stun_client_t; - -typedef struct { - char *server; -} stun_client_config_t; - -// STUN Message Header -typedef struct __attribute__((__packed__)) { - uint16_t reserved:2; // Upper two bits are 0 - uint16_t type:14; // 14-bit type - uint16_t msglen; // Message length - uint32_t cookie; // Magic cookie - uint8_t txid[12]; // Transaction ID -} stun_msg_hdr_t; - -// STUN Attribute -typedef struct { - uint16_t type; // Attribute type - uint16_t len; // Value length, prior to padding - uint8_t *val; // Pointer to attribute value -} stun_attr_t; - -// STUN Attribute: MAPPED-ADDRESS -typedef struct __attribute__((__packed__)) { - uint8_t reserved; - uint8_t family; - uint16_t port; - union { - uint8_t ipv4[4]; // IPv4 address is 32-bits - uint8_t ipv6[16]; // IPv6 address is 128-bits - }; -} stun_attr_mapped_address_t; - -// STUN Attribute: XOR-MAPPED-ADDRESS -typedef stun_attr_mapped_address_t stun_attr_xor_mapped_address_t; - -// STUN Attribute: USERNAME - - -////////////////////////////////// MACROS ////////////////////////////////// - -// Get class from message header type -#define CLASS(typ) (((typ >> 7) & 0x2) | ((typ >> 4) & 0x1)) - -// Get method from message header type -#define METHOD(typ) (((typ >> 2) & 0xF80) | ((typ >> 1) & 0x70) | (typ & 0xF)) - -#define TYPE(cls, mthd) ( \ - ((mthd & 0xF80) << 2) | \ - ((cls & 0x2) << 7) | \ - ((mthd & 0x70) << 1) | \ - ((cls & 0x1) << 4) | \ - (mthd & 0xF) \ -) - - -/////////////////////////// FORWARD DECLARATIONS /////////////////////////// - -/** - * (callback) Binding request response handler - * - * @param[in] name - * @param[in] arg User argument - */ -typedef void (*stun_client_binding_response_callback)( - const char *name, - void *arg -); - -/** - * Sends a STUN binding request to the specified server - * - * @param[in] srv Server (hostname or IP address) - * @param[in] cb Handler to call when a response is received - * @param[in] arg Optional user argument to pass to callback - */ -err_t stun_client_binding_request( - runloop_t *rl, - const char *srv, - stun_client_binding_response_callback cb, - void *arg -); - -#ifdef __cplusplus -} -#endif - -#endif /* URTC_STUN_H */ -- cgit v1.2.3