/main.h (ba0a6d0b41fa91492cbb98e1d6df668417f9bef4) (2364 bytes) (mode 100644) (type blob)
#ifndef _MAIN_H
#define _MAIN_H
#include <arpa/inet.h>
#include <errno.h>
#include <fcntl.h>
#include <netdb.h>
#include <netinet/in.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/types.h>
#include <time.h>
#include <tox/tox.h>
#include <unistd.h>
#include "util.h"
#include "uthash.h"
#define PROTOCOL_MAGIC_V1 0xa26a
#define PROTOCOL_MAGIC PROTOCOL_MAGIC_V1
#define PROTOCOL_MAGIC_HIGH (PROTOCOL_MAGIC >> 8)
#define PROTOCOL_MAGIC_LOW (PROTOCOL_MAGIC & 0xff)
#define PACKET_TYPE_PONG 0x0100
#define PACKET_TYPE_PING 0x0108
#define PACKET_TYPE_REQUESTTUNNEL 0x0602
#define PACKET_TYPE_ACKTUNNEL 0x0610
#define PACKET_TYPE_TCP 0x0600
#define PACKET_TYPE_TCP_FIN 0x0601
#define INT16_AT(array,pos) ( (*((array)+(pos)))*256 + (*((array)+(pos)+1)) )
#define BYTE2(number) (((number) / 256) & 0xff)
#define BYTE1(number) ((number)&0xff)
/* Offset of the data buffer in the packet */
#define PROTOCOL_BUFFER_OFFSET 8
#define READ_BUFFER_SIZE TOX_MAX_CUSTOM_PACKET_SIZE - PROTOCOL_BUFFER_OFFSET
#define PROTOCOL_MAX_PACKET_SIZE (READ_BUFFER_SIZE + PROTOCOL_BUFFER_OFFSET)
typedef struct tunnel_t {
/* The forwarded socket fd */
int sockfd;
/* Connection ID, must be int because of uthash */
int connid;
/* Friend number of remote end */
int32_t friendnumber;
UT_hash_handle hh;
} tunnel;
typedef struct protocol_frame_t {
uint32_t friendnumber;
/* Fields actually found in the protocol */
uint16_t magic;
uint16_t packet_type;
uint16_t connid;
uint16_t data_length;
const uint8_t *data;
} protocol_frame;
/**** GLOBAL VARIABLES ****/
extern Tox *tox;
/* Whether we're a client */
extern int client_mode;
/* Just send a ping and exit */
extern int ping_mode;
/* Open a local port and forward it */
extern int client_local_port_mode;
/* Forward stdin/stdout to remote machine - SSH ProxyCommand mode */
extern int client_pipe_mode;
/* Remote Tox ID in client mode */
extern char *remote_tox_id;
/* Ports and hostname for port forwarding */
extern int remote_port;
extern char *remote_host;
extern int local_port;
extern int select_nfds;
extern tunnel *by_id;
int parse_lossless_packet(void *sender_uc, const uint8_t *data, uint32_t len);
tunnel *tunnel_create(int sockfd, int connid, uint32_t friendnumber);
void tunnel_delete(tunnel *t);
#endif
Mode |
Type |
Size |
Ref |
File |
100644 |
blob |
495 |
7617e079b35d71d06f4429fef404cf87991e8476 |
Makefile |
100644 |
blob |
12050 |
75d4b0dffb30516fc89b6c63bc8fe3394801348f |
client.c |
100644 |
blob |
646 |
7d5e50d558094ed74875659f6ea3039b1ddc3e10 |
client.h |
100644 |
blob |
23719 |
4b7a3c54d258fdd21c8a138795fe8043e6d0df4b |
main.c |
100644 |
blob |
2364 |
ba0a6d0b41fa91492cbb98e1d6df668417f9bef4 |
main.h |
100644 |
blob |
3876 |
119a2d25778f9f213d8c44aaf5c6047a311810e8 |
tox_bootstrap.h |
100644 |
blob |
12536 |
75e9dc5ed9399120416e8da5f24d1ccde41cf901 |
utarray.h |
100644 |
blob |
61492 |
7205c67efa27c66884c8d4d1c8a105d4854a0548 |
uthash.h |
100644 |
blob |
2707 |
653a009bf54217c9ff82699f9f97677b68bb491c |
util.c |
100644 |
blob |
380 |
30d24a59885fa184228e8fd29c87efee48fd5ac8 |
util.h |
100644 |
blob |
55882 |
b5f3f04c104785a57d8280c37c1b19b36068e56e |
utlist.h |
100644 |
blob |
11555 |
867442c843dbe6bf096a488e3ce9ec6323809f7f |
utstring.h |
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"
Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/gdr/tuntox
Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/gdr/tuntox
Clone this repository using git:
git clone git://git.rocketgit.com/user/gdr/tuntox
You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a
merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main