This is the documentation for the latest (main) development branch of Zephyr. If you are looking for the documentation of previous releases, use the drop-down list at the bottom of the left panel and select the desired version.

SOCKS5 Proxy Support

Overview

The SOCKS library implements SOCKS5 support, which allows Zephyr to connect to peer devices via a network proxy.

See this SOCKS5 Wikipedia article for a detailed overview of how SOCKS5 works.

For more information about the protocol itself, see IETF RFC1928 SOCKS Protocol Version 5.

SOCKS5 API

The SOCKS5 support is enabled by CONFIG_SOCKS Kconfig variable. Application wanting to use the SOCKS5 must set the SOCKS5 proxy host address by calling setsockopt() like this:

static int set_proxy(int sock, const struct sockaddr *proxy_addr,
                     socklen_t proxy_addrlen)
{
    int ret;

    ret = setsockopt(sock, SOL_SOCKET, SO_SOCKS5,
                     proxy_addr, proxy_addrlen);
    if (ret < 0) {
            return -errno;
    }

    return 0;
}

SOCKS5 Proxy Usage in MQTT

For MQTT client, there is mqtt_client_set_proxy() API that the application can call to setup SOCKS5 proxy. See MQTT publisher sample application for usage example.