| /* |
| * Copyright (c) 2017-2018, Texas Instruments Incorporated |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * |
| * * Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * |
| * * Neither the name of Texas Instruments Incorporated nor the names of |
| * its contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
| * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
| * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
| * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
| * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
| * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
| * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| /*****************************************************************************/ |
| /* Include files */ |
| /*****************************************************************************/ |
| |
| #ifndef __SL_NET_IF_H__ |
| #define __SL_NET_IF_H__ |
| |
| #include <stdint.h> |
| #include <stdbool.h> |
| |
| #include <ti/net/slnetsock.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /*! |
| \defgroup SlNetIf SlNetIf group |
| |
| \short Controls standard stack/interface options and capabilities |
| |
| */ |
| /*! |
| \addtogroup SlNetIf |
| @{ |
| */ |
| |
| /*****************************************************************************/ |
| /* Macro declarations */ |
| /*****************************************************************************/ |
| |
| /* Interface ID bit pool to be used in interface add and in socket creation */ |
| #define SLNETIF_ID_1 (1 << 0) /**< Interface ID 1 */ |
| #define SLNETIF_ID_2 (1 << 1) /**< Interface ID 2 */ |
| #define SLNETIF_ID_3 (1 << 2) /**< Interface ID 3 */ |
| #define SLNETIF_ID_4 (1 << 3) /**< Interface ID 4 */ |
| #define SLNETIF_ID_5 (1 << 4) /**< Interface ID 5 */ |
| #define SLNETIF_ID_6 (1 << 5) /**< Interface ID 6 */ |
| #define SLNETIF_ID_7 (1 << 6) /**< Interface ID 7 */ |
| #define SLNETIF_ID_8 (1 << 7) /**< Interface ID 8 */ |
| #define SLNETIF_ID_9 (1 << 8) /**< Interface ID 9 */ |
| #define SLNETIF_ID_10 (1 << 9) /**< Interface ID 10 */ |
| #define SLNETIF_ID_11 (1 << 10) /**< Interface ID 11 */ |
| #define SLNETIF_ID_12 (1 << 11) /**< Interface ID 12 */ |
| #define SLNETIF_ID_13 (1 << 12) /**< Interface ID 13 */ |
| #define SLNETIF_ID_14 (1 << 13) /**< Interface ID 14 */ |
| #define SLNETIF_ID_15 (1 << 14) /**< Interface ID 15 */ |
| #define SLNETIF_ID_16 (1 << 15) /**< Interface ID 16 */ |
| |
| #define SLNETIF_MAX_IF (16) /**< Maximum interface */ |
| |
| /* this macro returns 0 when only one bit is set and a number when it isn't */ |
| #define ONLY_ONE_BIT_IS_SET(x) (((x > 0) && ((x & (x - 1)) == 0))?true:false) |
| |
| |
| /* Interface connection status bit pool to be used in set interface connection status function */ |
| |
| #define SLNETIF_STATUS_DISCONNECTED (0) |
| #define SLNETIF_STATUS_CONNECTED (1) |
| |
| /*! |
| \brief Interface state bit pool to be used in set interface state function |
| */ |
| typedef enum |
| { |
| SLNETIF_STATE_DISABLE = 0, |
| SLNETIF_STATE_ENABLE = 1 |
| } SlNetIfState_e; |
| |
| /*! |
| \brief Address type enum to be used in get ip address function |
| */ |
| typedef enum |
| { |
| SLNETIF_IPV4_ADDR = 0, |
| SLNETIF_IPV6_ADDR_LOCAL = 1, |
| SLNETIF_IPV6_ADDR_GLOBAL = 2 |
| } SlNetIfAddressType_e; |
| |
| /* Address config return values that can be retrieved in get ip address function */ |
| #define SLNETIF_ADDR_CFG_UNKNOWN (0) |
| #define SLNETIF_ADDR_CFG_DHCP (1) |
| #define SLNETIF_ADDR_CFG_DHCP_LLA (2) |
| #define SLNETIF_ADDR_CFG_STATIC (4) |
| #define SLNETIF_ADDR_CFG_STATELESS (5) |
| #define SLNETIF_ADDR_CFG_STATEFUL (6) |
| |
| /* Security object types for load Sec Obj function */ |
| #define SLNETIF_SEC_OBJ_TYPE_RSA_PRIVATE_KEY (1) |
| #define SLNETIF_SEC_OBJ_TYPE_CERTIFICATE (2) |
| #define SLNETIF_SEC_OBJ_TYPE_DH_KEY (3) |
| |
| |
| /*! |
| Check if interface state is enabled. |
| |
| \sa SlNetIf_queryIf() |
| */ |
| #define SLNETIF_QUERY_IF_STATE_BIT (1 << 0) |
| /*! |
| Check if interface connection status is connected. |
| |
| \sa SlNetIf_queryIf() |
| */ |
| #define SLNETIF_QUERY_IF_CONNECTION_STATUS_BIT (1 << 1) |
| /*! |
| Enable last partial match in an interface search, if no existing |
| interface matches the query completely. |
| |
| \sa SlNetIf_queryIf() |
| */ |
| #define SLNETIF_QUERY_IF_ALLOW_PARTIAL_MATCH_BIT (1 << 2) |
| |
| /*****************************************************************************/ |
| /* Structure/Enum declarations */ |
| /*****************************************************************************/ |
| |
| /*! |
| \brief SlNetIf_Config_t structure contains all the function callbacks that are expected to be filled by the relevant network stack interface \n |
| Each interface has different capabilities, so not all the API's must be supported therefore an API's can be defined as: |
| - <b>Mandatory API's</b> - must be supported by the interface in order to be part of SlNetSock layer |
| - <b>Non-Mandatory API's</b> - can be supported, but not mandatory for basic SlNetSock proper operation |
| |
| \note Interface that is not supporting a non-mandatory API should set it to \b NULL in its function list |
| |
| \sa SlNetIf_Config_t |
| */ |
| typedef struct SlNetIf_Config_t |
| { |
| /* socket related API's */ |
| int16_t (*sockCreate) (void *ifContext, int16_t domain, int16_t type, int16_t protocol, void **sdContext); /*!< \b Mandatory API \n The actual implementation of the interface for ::SlNetSock_create */ |
| int32_t (*sockClose) (int16_t sd, void *sdContext); /*!< \b Mandatory API \n The actual implementation of the interface for ::SlNetSock_close */ |
| int32_t (*sockShutdown) (int16_t sd, void *sdContext, int16_t how); /*!< \b Non-Mandatory API \n The actual implementation of the interface for ::SlNetSock_shutdown */ |
| int16_t (*sockAccept) (int16_t sd, void *sdContext, SlNetSock_Addr_t *addr, SlNetSocklen_t *addrlen, uint8_t flags, void **acceptedSdContext); /*!< \b Non-Mandatory API \n The actual implementation of the interface for ::SlNetSock_accept */ |
| int32_t (*sockBind) (int16_t sd, void *sdContext, const SlNetSock_Addr_t *addr, int16_t addrlen); /*!< \b Non-Mandatory API \n The actual implementation of the interface for ::SlNetSock_bind */ |
| int32_t (*sockListen) (int16_t sd, void *sdContext, int16_t backlog); /*!< \b Non-Mandatory API \n The actual implementation of the interface for ::SlNetSock_listen */ |
| int32_t (*sockConnect) (int16_t sd, void *sdContext, const SlNetSock_Addr_t *addr, SlNetSocklen_t addrlen, uint8_t flags); /*!< \b Non-Mandatory API \n The actual implementation of the interface for ::SlNetSock_connect */ |
| int32_t (*sockGetPeerName) (int16_t sd, void *sdContext, SlNetSock_Addr_t *addr, SlNetSocklen_t *addrlen); /*!< \b Non-Mandatory API \n The actual implementation of the interface for ::SlNetSock_getPeerName */ |
| int32_t (*sockGetLocalName) (int16_t sd, void *sdContext, SlNetSock_Addr_t *addr, SlNetSocklen_t *addrlen); /*!< \b Non-Mandatory API \n The actual implementation of the interface for ::SlNetSock_getSockName */ |
| int32_t (*sockSelect) (void *ifContext, int16_t nsds, SlNetSock_SdSet_t *readsds, SlNetSock_SdSet_t *writesds, SlNetSock_SdSet_t *exceptsds, SlNetSock_Timeval_t *timeout); /*!< \b Mandatory API \n The actual implementation of the interface for ::SlNetSock_select */ |
| int32_t (*sockSetOpt) (int16_t sd, void *sdContext, int16_t level, int16_t optname, void *optval, SlNetSocklen_t optlen); /*!< \b Mandatory API \n The actual implementation of the interface for ::SlNetSock_setOpt */ |
| int32_t (*sockGetOpt) (int16_t sd, void *sdContext, int16_t level, int16_t optname, void *optval, SlNetSocklen_t *optlen); /*!< \b Mandatory API \n The actual implementation of the interface for ::SlNetSock_getOpt */ |
| int32_t (*sockRecv) (int16_t sd, void *sdContext, void *buf, uint32_t len, uint32_t flags); /*!< \b Non-Mandatory API \n The actual implementation of the interface for ::SlNetSock_recv */ |
| int32_t (*sockRecvFrom) (int16_t sd, void *sdContext, void *buf, uint32_t len, uint32_t flags, SlNetSock_Addr_t *from, SlNetSocklen_t *fromlen); /*!< \b Mandatory API \n The actual implementation of the interface for ::SlNetSock_recvFrom */ |
| int32_t (*sockSend) (int16_t sd, void *sdContext, const void *buf, uint32_t len, uint32_t flags); /*!< \b Non-Mandatory API \n The actual implementation of the interface for ::SlNetSock_send */ |
| int32_t (*sockSendTo) (int16_t sd, void *sdContext, const void *buf, uint32_t len, uint32_t flags, const SlNetSock_Addr_t *to, SlNetSocklen_t tolen); /*!< \b Mandatory API \n The actual implementation of the interface for ::SlNetSock_sendTo */ |
| int32_t (*sockstartSec) (int16_t sd, void *sdContext, SlNetSockSecAttrib_t *secAttrib, uint8_t flags); /*!< \b Non-Mandatory API \n The actual implementation of the interface for ::SlNetSock_startSec */ |
| |
| /* util related API's */ |
| int32_t (*utilGetHostByName) (void *ifContext, char *name, const uint16_t nameLen, uint32_t *ipAddr, uint16_t *ipAddrLen, const uint8_t family); /*!< \b Non-Mandatory API \n The actual implementation of the interface for ::SlNetUtil_getHostByName */ |
| |
| /* if related API's */ |
| int32_t (*ifGetIPAddr) (void *ifContext, SlNetIfAddressType_e addrType, uint16_t *addrConfig, uint32_t *ipAddr); /*!< \b Mandatory API \n The actual implementation of the interface for ::SlNetIf_getIPAddr */ |
| int32_t (*ifGetConnectionStatus) (void *ifContext); /*!< \b Mandatory API \n The actual implementation of the interface for ::SlNetIf_getConnectionStatus */ |
| int32_t (*ifLoadSecObj) (void *ifContext, uint16_t objType, char *objName, int16_t objNameLen, uint8_t *objBuff, int16_t objBuffLen); /*!< \b Non-Mandatory API \n The actual implementation of the interface for ::SlNetIf_loadSecObj */ |
| int32_t (*ifCreateContext) (uint16_t ifID, const char *ifName, void **ifContext); /*!< \b Non-Mandatory API \n The actual implementation of the interface for ::SlNetIf_add */ |
| |
| } SlNetIf_Config_t; |
| |
| |
| /*! |
| \brief The SlNetIf_t structure holds the configuration of the interface |
| Its ID, name, flags and the configuration list - ::SlNetIf_Config_t. |
| */ |
| typedef struct SlNetIf_t |
| { |
| uint32_t ifID; |
| char *ifName; |
| int32_t flags; |
| SlNetIf_Config_t *ifConf; |
| void *ifContext; |
| } SlNetIf_t; |
| |
| /*****************************************************************************/ |
| /* Function prototypes */ |
| /*****************************************************************************/ |
| |
| /*! |
| |
| \brief Initialize the SlNetIf module |
| |
| \param[in] flags For future usage, |
| The value 0 may be used in order to run the |
| default flags |
| |
| \return Zero on success, or negative error code on failure |
| |
| \par Examples |
| \snippet ti/net/test/snippets/slnetif.c SlNetIf_init snippet |
| */ |
| int32_t SlNetIf_init(int32_t flags); |
| |
| /*! |
| \brief Add a new SlNetIf-compatible interface to the system |
| |
| The SlNetIf_add function allows the application to add specific interfaces |
| with their priorities and function list.\n |
| This function gives full control to the application on the interfaces. |
| |
| \param[in] ifID Specifies the interface which needs |
| to be added.\n |
| The values of the interface identifier |
| is defined with the prefix SLNETIF_ID_ |
| which defined in slnetif.h |
| \param[in] ifName Specifies the name of the interface, |
| \b Note: Can be set to NULL, but when set to NULL |
| cannot be used with SlNetIf_getIDByName |
| \param[in] ifConf Specifies the function list for the |
| interface |
| \param[in] priority Specifies the priority needs to be |
| set (In ascending order). |
| Note: maximum priority is 15 |
| |
| \return Zero on success, or negative error code on failure |
| |
| \slnetif_not_threadsafe |
| |
| \par Examples |
| \snippet ti/net/test/snippets/slnetif.c SlNetIf_add wifi snippet |
| \snippet ti/net/test/snippets/slnetif.c SlNetIf_add NDK snippet |
| \snippet ti/net/test/snippets/slnetif.c SlNetIf_add NDKSec snippet |
| */ |
| int32_t SlNetIf_add(uint16_t ifID, char *ifName, const SlNetIf_Config_t *ifConf, uint8_t priority); |
| |
| |
| /*! |
| \brief Get interface configuration from interface ID |
| |
| The SlNetIf_getIfByID function retrieves the configuration of the |
| requested interface. |
| |
| \param[in] ifID Specifies the interface which its configuration |
| needs to be retrieved.\n |
| The values of the interface identifier is |
| defined with the prefix SLNETIF_ID_ which |
| defined in slnetif.h |
| |
| \return A pointer to the configuration of the |
| interface on success, or NULL on failure |
| |
| \sa SlNetIf_add() |
| |
| \slnetif_not_threadsafe |
| |
| \par Examples |
| \snippet ti/net/test/snippets/slnetif.c SlNetIf_getIfByID snippet |
| */ |
| SlNetIf_t * SlNetIf_getIfByID(uint16_t ifID); |
| |
| |
| /*! |
| \brief Query for the highest priority interface, given a list of |
| interfaces and properties. |
| |
| \param[in] ifBitmap The bit-wise OR of interfaces to be searched.\n |
| Note: Zero is currently not valid. |
| \param[in] queryBitmap The bit-wise OR of additional query criteria. |
| |
| \remarks @c queryBitmap can be set to : |
| - #SLNETIF_QUERY_IF_STATE_BIT |
| - #SLNETIF_QUERY_IF_CONNECTION_STATUS_BIT |
| - #SLNETIF_QUERY_IF_ALLOW_PARTIAL_MATCH_BIT |
| |
| \return A pointer to the configuration of a found |
| interface on success, or NULL on failure |
| |
| \sa SlNetIf_add() |
| \slnetif_not_threadsafe |
| |
| \par Examples |
| \snippet ti/net/test/snippets/slnetif.c SlNetIf_queryIf snippet |
| */ |
| SlNetIf_t * SlNetIf_queryIf(uint32_t ifBitmap, uint32_t queryBitmap); |
| |
| |
| /*! |
| \brief Get interface Name from interface ID |
| |
| The SlNetIf_getNameByID function retrieves the name of the requested |
| interface. |
| |
| \param[in] ifID Specifies the interface which its name needs |
| to be retrieved.\n |
| The values of the interface identifier is |
| defined with the prefix SLNETIF_ID_ which |
| defined in slnetif.h |
| |
| \return A pointer to the name of the interface on |
| success, or NULL on failure |
| |
| \sa SlNetIf_add() |
| \sa SlNetIf_getIDByName() |
| |
| \slnetif_not_threadsafe |
| |
| \par Examples |
| \snippet ti/net/test/snippets/slnetif.c SlNetIf_getNameByID snippet |
| */ |
| const char * SlNetIf_getNameByID(uint16_t ifID); |
| |
| |
| /*! |
| \brief Get interface ID from interface name |
| |
| The SlNetIf_getIDByName function retrieves the interface identifier of the |
| requested interface name. |
| |
| \param[in] ifName Specifies the interface which its interface |
| identifier needs to be retrieved.\n |
| |
| \return The interface identifier value of the interface |
| on success, or negative error code on failure |
| The values of the interface identifier is |
| defined with the prefix SLNETIF_ID_ which |
| defined in slnetif.h |
| |
| \sa SlNetIf_add() |
| \sa SlNetIf_getNameByID() |
| \sa SlNetSock_getIfID() |
| |
| \note - Input NULL as ifName will return error code. |
| - When using more than one interface with the same |
| name, the ID of the highest priority interface |
| will be returned |
| \slnetif_not_threadsafe |
| |
| \par Examples |
| \snippet ti/net/test/snippets/slnetif.c SlNetIf_getIDByName snippet |
| */ |
| int32_t SlNetIf_getIDByName(char *ifName); |
| |
| |
| /*! |
| \brief Get interface priority |
| |
| The SlNetIf_getPriority function retrieves the priority of the |
| interface. |
| |
| \param[in] ifID Specifies the interface which its priority |
| needs to be retrieved.\n |
| The values of the interface identifier is |
| defined with the prefix SLNETIF_ID_ which |
| defined in slnetif.h |
| |
| \return The priority value of the interface on success, |
| or negative error code on failure |
| |
| \sa SlNetIf_add() |
| \sa SlNetIf_setPriority() |
| |
| \slnetif_not_threadsafe |
| |
| \par Examples |
| \snippet ti/net/test/snippets/slnetif.c SlNetIf_getPriority snippet |
| */ |
| int32_t SlNetIf_getPriority(uint16_t ifID); |
| |
| |
| /*! |
| \brief Set interface priority |
| |
| The SlNetIf_setPriority function sets new priority to the requested interface. |
| |
| \param[in] ifID Specifies the interface which its priority |
| needs to be changed.\n |
| The values of the interface identifier is |
| defined with the prefix SLNETIF_ID_ which |
| defined in slnetif.h |
| \param[in] priority Specifies the priority needs to be set. |
| (In ascending order) |
| Note: maximum priority is 15 |
| |
| \return Zero on success, or negative error code on |
| failure |
| |
| \sa SlNetIf_add() |
| \sa SlNetIf_getPriority() |
| |
| \slnetif_not_threadsafe |
| |
| \par Examples |
| \snippet ti/net/test/snippets/slnetif.c SlNetIf_setPriority snippet |
| */ |
| int32_t SlNetIf_setPriority(uint16_t ifID, uint8_t priority); |
| |
| |
| /*! |
| \brief Set interface state |
| |
| Enable or disable the interface. |
| |
| \param[in] ifID Specifies the interface which its state |
| needs to be changed.\n |
| The values of the interface identifier is |
| defined with the prefix SLNETIF_ID_ which |
| defined in slnetif.h |
| \param[in] ifState Specifies the interface state.\n |
| The values of the interface state are defined |
| with the prefix SLNETIF_INTERFACE_ which |
| defined in slnetif.h |
| |
| \return Zero on success, or negative error code on |
| failure |
| |
| \sa SlNetIf_add() |
| \sa SlNetIf_getState() |
| |
| \slnetif_not_threadsafe |
| |
| \par Examples |
| \snippet ti/net/test/snippets/slnetif.c SlNetIf_setState snippet |
| */ |
| int32_t SlNetIf_setState(uint16_t ifID, SlNetIfState_e ifState); |
| |
| |
| /*! |
| \brief Get interface state |
| |
| Obtain the current state of the interface. |
| |
| \param[in] ifID Specifies the interface which its state needs |
| to be retrieved.\n |
| The values of the interface identifier is |
| defined with the prefix SLNETIF_ID_ which |
| defined in slnetif.h |
| |
| \return State of the interface on success, or negative |
| error code on failure |
| |
| \sa SlNetIf_add() |
| \sa SlNetIf_setState() |
| |
| \slnetif_not_threadsafe |
| |
| \par Examples |
| \snippet ti/net/test/snippets/slnetif.c SlNetIf_getState snippet |
| */ |
| int32_t SlNetIf_getState(uint16_t ifID); |
| |
| |
| /*! |
| \brief Get the connection status of an interface |
| |
| \param[in] ifID Interface ID |
| |
| \return @c SLNETIF_STATUS_ value on success, |
| or negative error code on failure |
| |
| \remark @c ifID should be a value with the @c SLNETIF_ID_ |
| prefix |
| |
| \sa SlNetIf_add() |
| \sa SLNETIF_STATUS_CONNECTED |
| \sa SLNETIF_STATUS_DISCONNECTED |
| |
| \slnetif_not_threadsafe |
| |
| \par Examples |
| \snippet ti/net/test/snippets/slnetif.c SlNetIf_getConnectionStatus snippet |
| */ |
| int32_t SlNetIf_getConnectionStatus(uint16_t ifID); |
| |
| |
| /*! |
| \brief Get IP Address of specific interface |
| |
| The SlNetIf_getIPAddr function retrieve the IP address of a specific |
| interface according to the Address Type, IPv4, IPv6 LOCAL |
| or IPv6 GLOBAL. |
| |
| \param[in] ifID Specifies the interface which its connection |
| state needs to be retrieved.\n |
| The values of the interface identifier is |
| defined with the prefix SLNETIF_ID_ which |
| defined in slnetif.h |
| \param[in] addrType Address type: |
| - #SLNETIF_IPV4_ADDR |
| - #SLNETIF_IPV6_ADDR_LOCAL |
| - #SLNETIF_IPV6_ADDR_GLOBAL |
| \param[out] addrConfig Address config: |
| - #SLNETIF_ADDR_CFG_UNKNOWN |
| - #SLNETIF_ADDR_CFG_DHCP |
| - #SLNETIF_ADDR_CFG_DHCP_LLA |
| - #SLNETIF_ADDR_CFG_STATIC |
| - #SLNETIF_ADDR_CFG_STATELESS |
| - #SLNETIF_ADDR_CFG_STATEFUL |
| \param[out] ipAddr IP Address according to the Address Type |
| |
| \return Zero on success, or negative error code on failure |
| |
| \sa SlNetIfAddressType_e |
| |
| \slnetif_not_threadsafe |
| |
| \par Examples |
| \snippet ti/net/test/snippets/slnetif.c SlNetIf_getIPAddr snippet |
| */ |
| int32_t SlNetIf_getIPAddr(uint16_t ifID, SlNetIfAddressType_e addrType, uint16_t *addrConfig, uint32_t *ipAddr); |
| |
| |
| /*! |
| \brief Load secured buffer to the network stack |
| |
| The SlNetSock_secLoadObj function loads buffer/files into the inputted |
| network stack for future usage of the socket SSL/TLS connection. |
| This option is relevant for network stacks with file system and also for |
| network stacks that lack file system that can store the secured files. |
| |
| \param[in] objType Specifies the security object type which |
| could be one of the following:\n |
| - #SLNETIF_SEC_OBJ_TYPE_RSA_PRIVATE_KEY |
| - #SLNETIF_SEC_OBJ_TYPE_CERTIFICATE |
| - #SLNETIF_SEC_OBJ_TYPE_DH_KEY |
| \param[in] objName Specifies the name/input identifier of the |
| secured buffer loaded |
| for file systems - this can be the file name |
| for plain text buffer loading this can be the |
| name of the object |
| \param[in] objNameLen Specifies the buffer name length to be loaded.\n |
| \param[in] objBuff Specifies the pointer to the secured buffer to |
| be loaded.\n |
| \param[in] objBuffLen Specifies the buffer length to be loaded.\n |
| \param[in] ifBitmap Specifies the interfaces which the security |
| objects needs to be added to.\n |
| The values of the interface identifiers |
| is defined with the prefix SLNETIF_ID_ |
| which defined in slnetif.h |
| |
| \return On success, buffer type handler index to be |
| used when attaching the secured buffer to a |
| socket.\n |
| A successful return code should be a positive |
| number (int16)\n |
| On error, a negative value will be returned |
| specifying the error code. |
| - #SLNETERR_STATUS_ERROR - load operation failed |
| |
| \sa SlNetSock_setOpt() |
| |
| \slnetif_not_threadsafe |
| |
| */ |
| int32_t SlNetIf_loadSecObj(uint16_t objType, char *objName, int16_t objNameLen, uint8_t *objBuff, int16_t objBuffLen, uint32_t ifBitmap); |
| |
| /*! |
| |
| Close the Doxygen group. |
| @} |
| |
| */ |
| |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |
| |
| #endif /* __SL_NET_IF_H__ */ |