aboutsummaryrefslogtreecommitdiff
path: root/options.h
blob: 03b5e20444e28e33bc2deaa5515e7f2343ae886d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#ifndef OPTIONS_H
#define OPTIONS_H 1

#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include <pwd.h>
#include <grp.h>
#ifdef HAVE_SELINUX
#include <selinux/selinux.h>
#endif

struct options {
	/** user defined magic value (prevent Cisco WSA/IronPort fingerprint scan) */
	uint32_t magic;
	/** Proxy's internet address */
	uint32_t given_proxy_ip; 
	/** Password-Digest (must be the same on proxy and client for authentication to succeed) */
	unsigned char *password_digest;
	/** Port the client listens on */
	uint16_t tcp_listen_port;
	/** Proxy's internet address */
	uint32_t given_dst_ip;
	/** Port to send data to from the proxy */
	int tcp_port;
	/** Default maximum number of tunnels to support at once */
	uint32_t max_tunnels;
	/** Default log level */
	int log_level;
	/** Device to capture packets from */
	char *pcap_device;
	/** Usually stdout, but can be altered by the user */
	FILE *log_file;
	/** Print more detailed traffic statistics if non zero value */
	int print_stats;
	/** use UDP instead of ICMP */
	int udp;
	/** unpriviledged mode */
	int unprivledged;

#ifdef HAVE_SELINUX
	char *selinux_context;
#endif
#ifndef WIN32
	/** UID of the running process */
	uid_t uid;
	/** GID of the running process */
	gid_t gid;
	/** CHROOT dir */
	char *root_dir;
	/** PIDFILE */
	FILE *pid_file;
	/** run as daemon */
	bool daemonize;
	/** log to syslog if non zero value */
	int syslog;
#endif
};

extern struct options opts;

void print_usage(const char *arg0);

int parse_options(int argc, char **argv);

#endif