diff --git a/net/ESP8266Interface/ESP8266Interface.cpp b/net/ESP8266Interface/ESP8266Interface.cpp index 60a1d17f75..cf29646337 100644 --- a/net/ESP8266Interface/ESP8266Interface.cpp +++ b/net/ESP8266Interface/ESP8266Interface.cpp @@ -128,16 +128,6 @@ int ESP8266Interface::socket_close(void *handle) return err; } -int ESP8266Interface::socket_set_option(void *handle, int optname, const void *optval, unsigned optlen) -{ - return NSAPI_ERROR_UNSUPPORTED; -} - -int ESP8266Interface::socket_get_option(void *handle, int optname, void *optval, unsigned *optlen) -{ - return NSAPI_ERROR_UNSUPPORTED; -} - int ESP8266Interface::socket_bind(void *handle, const SocketAddress &address) { return NSAPI_ERROR_UNSUPPORTED; diff --git a/net/ESP8266Interface/ESP8266Interface.h b/net/ESP8266Interface/ESP8266Interface.h index 41d89687d5..6d3d76caa4 100644 --- a/net/ESP8266Interface/ESP8266Interface.h +++ b/net/ESP8266Interface/ESP8266Interface.h @@ -77,24 +77,6 @@ protected: */ virtual int socket_close(void *handle); - /** Set socket options - \param handle Socket handle - \param optname Option ID - \param optval Option value - \param optlen Length of the option value - \return 0 on success, negative on failure - */ - virtual int socket_set_option(void *handle, int optname, const void *optval, unsigned int optlen); - - /** Get socket options - \param handle Socket handle - \param optname Option ID - \param optval Buffer pointer where to write the option value - \param optlen Length of the option value - \return 0 on success, negative on failure - */ - virtual int socket_get_option(void *handle, int optname, void *optval, unsigned int *optlen); - /** Bind a server socket to a specific port * @param handle Socket handle * @param address Local address to listen for incoming connections on diff --git a/net/LWIPInterface/LWIPInterface.cpp b/net/LWIPInterface/LWIPInterface.cpp index 5e05daee46..2fd9c82a68 100644 --- a/net/LWIPInterface/LWIPInterface.cpp +++ b/net/LWIPInterface/LWIPInterface.cpp @@ -213,16 +213,6 @@ int LWIPInterface::socket_close(void *handle) } -int LWIPInterface::socket_set_option(void *handle, int optname, const void *optval, unsigned optlen) -{ - return NSAPI_ERROR_UNSUPPORTED; -} - -int LWIPInterface::socket_get_option(void *handle, int optname, void *optval, unsigned *optlen) -{ - return NSAPI_ERROR_UNSUPPORTED; -} - int LWIPInterface::socket_bind(void *handle, const SocketAddress &address) { struct lwip_socket *s = (struct lwip_socket *)handle; diff --git a/net/LWIPInterface/LWIPInterface.h b/net/LWIPInterface/LWIPInterface.h index f2386c5d9d..962d484c4f 100644 --- a/net/LWIPInterface/LWIPInterface.h +++ b/net/LWIPInterface/LWIPInterface.h @@ -64,24 +64,6 @@ protected: */ virtual int socket_close(void *handle); - /** Set socket options - \param handle Socket handle - \param optname Option ID - \param optval Option value - \param optlen Length of the option value - \return 0 on success, negative on failure - */ - virtual int socket_set_option(void *handle, int optname, const void *optval, unsigned int optlen); - - /** Get socket options - \param handle Socket handle - \param optname Option ID - \param optval Buffer pointer where to write the option value - \param optlen Length of the option value - \return 0 on success, negative on failure - */ - virtual int socket_get_option(void *handle, int optname, void *optval, unsigned int *optlen); - /** Bind a server socket to a specific port * @param handle Socket handle * @param address Local address to listen for incoming connections on diff --git a/net/NetworkSocketAPI/NetworkInterface.cpp b/net/NetworkSocketAPI/NetworkInterface.cpp index 39ccdd69ff..a39fdc7c43 100644 --- a/net/NetworkSocketAPI/NetworkInterface.cpp +++ b/net/NetworkSocketAPI/NetworkInterface.cpp @@ -28,3 +28,23 @@ int NetworkInterface::gethostbyname(SocketAddress *address, const char *name) address->set_ip_address(buffer); return 0; } + +int NetworkInterface::setstackopt(int level, int optname, const void *optval, unsigned optlen) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +int NetworkInterface::getstackopt(int level, int optname, void *optval, unsigned *optlen) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +int NetworkInterface::setsockopt(void *handle, int level, int optname, const void *optval, unsigned optlen) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +int NetworkInterface::getsockopt(void *handle, int level, int optname, void *optval, unsigned *optlen) +{ + return NSAPI_ERROR_UNSUPPORTED; +} diff --git a/net/NetworkSocketAPI/NetworkInterface.h b/net/NetworkSocketAPI/NetworkInterface.h index 4f1c2cd139..162fbe0861 100644 --- a/net/NetworkSocketAPI/NetworkInterface.h +++ b/net/NetworkSocketAPI/NetworkInterface.h @@ -36,12 +36,6 @@ enum nsapi_error_t { NSAPI_ERROR_AUTH_FAILURE = -3009, /*!< connection to access point faield */ NSAPI_ERROR_DEVICE_ERROR = -3010, /*!< failure interfacing with the network procesor */ }; - -/** Enum of available options - * @enum nsapi_opt_t - */ -enum nsapi_opt_t { -}; /** Enum of socket protocols * @enum protocol_t @@ -93,6 +87,24 @@ public: */ virtual int gethostbyname(SocketAddress *address, const char *name); + /* Set stack options + * @param level Option level + * @param optname Option identifier + * @param optval Option value + * @param optlen Length of the option value + * @return 0 on success, negative on failure + */ + virtual int setstackopt(int level, int optname, const void *optval, unsigned optlen); + + /* Get stack options + * @param level Option level + * @param optname Option identifier + * @param optval Buffer where to write option value + * @param optlen Length of the option value + * @return 0 on success, negative on failure + */ + virtual int getstackopt(int level, int optname, void *optval, unsigned *optlen); + protected: friend class Socket; friend class UDPSocket; @@ -114,24 +126,6 @@ protected: */ virtual int socket_close(void *handle) = 0; - /** Set socket options - * @param handle Socket handle - * @param optname Option ID - * @param optval Option value - * @param optlen Length of the option value - * @return 0 on success, negative on failure - */ - virtual int socket_set_option(void *handle, int optname, const void *optval, unsigned int optlen) = 0; - - /** Get socket options - * @param handle Socket handle - * @param optname Option ID - * @param optval Buffer pointer where to write the option value - * @param optlen Length of the option value - * @return 0 on success, negative on failure - */ - virtual int socket_get_option(void *handle, int optname, void *optval, unsigned int *optlen) = 0; - /** Bind a server socket to a specific port * @param handle Socket handle * @param address Local address to listen for incoming connections on @@ -220,6 +214,26 @@ protected: * @note Callback may be called in an interrupt context. */ virtual void socket_attach(void *handle, void (*callback)(void *), void *data) = 0; + + /* Set socket options + * @param handle Socket handle + * @param level Option level + * @param optname Option identifier + * @param optval Option value + * @param optlen Length of the option value + * @return 0 on success, negative on failure + */ + virtual int setsockopt(void *handle, int level, int optname, const void *optval, unsigned optlen); + + /* Get socket options + * @param handle Socket handle + * @param level Option level + * @param optname Option identifier + * @param optval Buffer where to write option value + * @param optlen Length of the option value + * @return 0 on success, negative on failure + */ + virtual int getsockopt(void *handle, int level, int optname, void *optval, unsigned *optlen); }; #endif diff --git a/net/NetworkSocketAPI/Socket.cpp b/net/NetworkSocketAPI/Socket.cpp index 0d6e652993..e291f7e1a5 100644 --- a/net/NetworkSocketAPI/Socket.cpp +++ b/net/NetworkSocketAPI/Socket.cpp @@ -89,22 +89,23 @@ void Socket::set_timeout(unsigned timeout) _timeout = timeout; } -int Socket::set_option(int optname, const void *optval, unsigned int optlen) +int Socket::setsockopt(int level, int optname, const void *optval, unsigned optlen) { if (!_socket) { return NSAPI_ERROR_NO_SOCKET; } - return _iface->socket_set_option(_socket, optname, optval, optlen); + return _iface->setsockopt(_socket, level, optname, optval, optlen); } -int Socket::get_option(int optname, void *optval, unsigned int *optlen) +int Socket::getsockopt(int level, int optname, void *optval, unsigned *optlen) { if (!_socket) { return NSAPI_ERROR_NO_SOCKET; } - return _iface->socket_get_option(_socket, optname, optval, optlen); + return _iface->getsockopt(_socket, level, optname, optval, optlen); + } void Socket::thunk(void *data) diff --git a/net/NetworkSocketAPI/Socket.h b/net/NetworkSocketAPI/Socket.h index 68353f1b12..59e8f9558f 100644 --- a/net/NetworkSocketAPI/Socket.h +++ b/net/NetworkSocketAPI/Socket.h @@ -33,6 +33,10 @@ public: */ virtual int open(NetworkInterface *iface) = 0; + /** Close the socket + */ + int close(); + /** Bind a socket to a specific port * @param port The port to listen for incoming connections on * @return 0 on success, negative on failure. @@ -63,24 +67,22 @@ public: void set_timeout(unsigned int timeout); /* Set socket options - * @param optname Option ID + * @param level Option level + * @param optname Option identifier * @param optval Option value * @param optlen Length of the option value * @return 0 on success, negative on failure - */ - int set_option(int optname, const void *optval, unsigned optlen); - + */ + int setsockopt(int level, int optname, const void *optval, unsigned optlen); + /* Get socket options - * @param optname Option ID - * @param optval Buffer pointer where to write the option value + * @param level Option level + * @param optname Option identifier + * @param optval Buffer where to write option value * @param optlen Length of the option value * @return 0 on success, negative on failure - */ - int get_option(int optname, void *optval, unsigned *optlen); - - /** Close the socket - */ - int close(); + */ + int getsockopt(int level, int optname, void *optval, unsigned *optlen); /** Register a callback on state change of the socket * @param callback Function to call on state change