diff options
Diffstat (limited to 'src/pconfig.h')
-rw-r--r-- | src/pconfig.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/pconfig.h b/src/pconfig.h new file mode 100644 index 0000000..4adabc9 --- /dev/null +++ b/src/pconfig.h @@ -0,0 +1,91 @@ +#ifndef PCONFIG_H +#define PCONFIG_H 1 + +enum { + /** Ping tunnel's operating mode (client) */ + kMode_forward = 0, + /** Ping tunnel's operating mode (server) */ + kMode_proxy, + /** Set this constant to the number of + * concurrent connections you wish to handle by default. + */ + kMax_tunnels = 10, + /** Different verbosity levels. */ + kNo_log = -1, + kLog_error = 0, + kLog_info, + kLog_event, + kLog_verbose, + kLog_debug, + kLog_sendrecv, + /** Major (0.xx) and minor (x.70) version */ + kMajor_version = 0, + /** numbers */ + kMinor_version = 72, + kIP_packet_max_size = 576, + /** In bytes, mind you */ + kIP_header_size = 20, + kIP_actual_size = (kIP_packet_max_size - kIP_header_size) - ((kIP_packet_max_size - kIP_header_size) % 8), + /** Also in bytes */ + kICMP_header_size = 8, + /** This constant control the maximum size of + * the payload-portion of the ICMP packets + * we send. Note that this does not include + * the IP or ICMP headers! + */ + kDefault_buf_size = 1024, + /** Type code for echo request and replies */ + kICMP_echo_request = 8, + kICMP_echo_reply = 0, + /** number of packets we can have in our send/receive ring */ + kPing_window_size = 64, + /** Tunnels are automatically closed after one minute of inactivity. Since + * we continously send acknowledgements between the two peers, this mechanism + * won't disconnect "valid" connections. + */ + kAutomatic_close_timeout = 60, // Seconds! + /** size of md5 digest in bytes */ + kMD5_digest_size = 16, + /** These constants are used to indicate the protocol state. The protocol + * works as follows: + * - The identifier is used by both the proxy and the forwarder + * to identify the session (and thus the relevant sockets). + * - The seq-no of the ping packet is used in a sliding-window-esque + * way, and to identify the order of data. + * + * The protocol can be in any of the following states: + * kProxy_start Causes the proxy to open a connection to the given + * host and port, associating the ID with the socket, + * before the data on the socket are transmitted. + * kProxy_data Indicates that the packet contains data from the proxy. + * Data ordering is indicated by the seq-no, which will start + * at 0. (The proxy and forwarder maintain different seq-nos.) + * kUser_data This packet contains user data. + * kConnection_close Indicates that the connection is being closed. + * kProxy_ack and Acknowledges the packet (and all packets before it) with seq_no = ack. + * kUser_ack This is used if there are no implicit acknowledgements due to data + * being sent. + * + * Acknowledgements work by the remote peer acknowledging the last + * continuous seq no it has received. + * + * Note: A proxy receiving a kProxy_data packet, or a user receiving a + * kUser_data packet, should ignore it, as it is the host operating system + * actually returning the ping. This is mostly relevant for users, and for + * proxies running in unprivileged mode. + */ + kProxy_start = 0, + kProto_ack, + kProto_data, + kProto_close, + kProto_authenticate, + kNum_proto_types, + /** set when packet comes from a user */ + kUser_flag = 1 << 30, + /** set when packet comes from the proxy */ + kProxy_flag = 1 << 31, + kFlag_mask = kUser_flag | kProxy_flag, + kDNS_port = 53 +}; + +#endif |