[tor-commits] [torsocks/master] Add socks5 ABI

dgoulet at torproject.org dgoulet at torproject.org
Fri Apr 4 22:40:25 UTC 2014


commit 9d7af02c3347e344b67f843cd33913769e891a81
Author: David Goulet <dgoulet at ev0ke.net>
Date:   Thu Jun 6 20:39:21 2013 -0400

    Add socks5 ABI
    
    Signed-off-by: David Goulet <dgoulet at ev0ke.net>
---
 src/common/socks5.c |   18 +++++++++
 src/common/socks5.h |  105 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 123 insertions(+)

diff --git a/src/common/socks5.c b/src/common/socks5.c
new file mode 100644
index 0000000..68a1d2f
--- /dev/null
+++ b/src/common/socks5.c
@@ -0,0 +1,18 @@
+/*
+ * Copyright (C) 2013 - David Goulet <dgoulet at ev0ke.net>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License, version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * 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, write to the Free Software Foundation, Inc., 51
+ * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include "socks5.h"
diff --git a/src/common/socks5.h b/src/common/socks5.h
new file mode 100644
index 0000000..b8e0e69
--- /dev/null
+++ b/src/common/socks5.h
@@ -0,0 +1,105 @@
+/*
+ * Structure used by torsocks to form SOCKS requests.
+ *
+ * Copyright (C) 2013 - David Goulet <dgoulet at ev0ke.net>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License, version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * 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, write to the Free Software Foundation, Inc., 51
+ * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef TORSOCKS_SOCKS_H
+#define TORSOCKS_SOCKS_H
+
+#include <stdint.h>
+
+#include "connection.h"
+
+/* For SOCKS version 5. */
+#define SOCKS5_VERSION			0x05
+
+/*
+ * As stated in the SOCKS extension of Tor, for v5 the "NO AUTHENTICATION
+ * METHOD" [00] is supported and should be used.
+ */
+#define SOCKS5_NO_AUTH_METHOD	0x00
+
+/* Request to connect. */
+#define SOCKS5_CMD_CONNECT		0x01
+
+/* Address type. */
+#define SOCKS5_ATYP_IPV4		0x01
+#define SOCKS5_ATYP_DOMAIN		0x03
+#define SOCKS5_ATYP_IPV6		0x04
+
+/* Replies code. */
+#define SOCKS5_REPLY_SUCCESS	0x00
+#define SOCKS5_REPLY_FAIL		0x01
+#define SOCKS5_REPLY_DENY_RULE	0x02
+#define SOCKS5_REPLY_NO_NET		0x03
+#define SOCKS5_REPLY_NO_HOST	0x04
+#define SOCKS5_REPLY_REFUSED	0x05
+#define SOCKS5_REPLY_TTL_EXP	0x06
+#define SOCKS5_REPLY_CMD_NOTSUP	0x07
+#define SOCKS5_REPLY_ADR_NOTSUP	0x08
+
+/* Request data structure for the method. */
+struct socks5_method_req {
+	uint8_t ver;
+	uint8_t nmethods;
+};
+
+/* Reply data structure for the method. */
+struct socks5_method_res {
+	uint8_t ver;
+	uint8_t method;
+};
+
+/* First part of a request. */
+struct socks5_request {
+	uint8_t ver;
+	uint8_t cmd;
+	uint8_t rsv;
+	uint8_t atyp;
+};
+
+/* IPv4 destination addr for a request. */
+struct socks5_request_ipv4 {
+	uint8_t len;
+	uint8_t addr[4];
+	uint16_t port;
+};
+
+/* IPv6 destination addr for a request. */
+struct socks5_request_ipv6 {
+	uint8_t len;
+	uint8_t addr[16];
+	uint16_t port;
+};
+
+/* Domain name for a request. */
+struct socks5_request_domain {
+	uint8_t len;
+	/* Maximum size of len above. No NULL byte is needed. */
+	char name[UINT8_MAX];
+	uint16_t port;
+};
+
+/* Non variable part of a reply. */
+struct socks5_reply {
+	uint8_t ver;
+	uint8_t rep;
+	uint8_t rsv;
+	uint8_t atyp;
+};
+
+#endif /* TORSOCKS_SOCKS_H */





More information about the tor-commits mailing list