| 838 | } |
| 839 | |
| 840 | int sal_setsockopt(int socket, int level, int optname, const void *optval, socklen_t optlen) |
| 841 | { |
| 842 | struct sal_socket *sock; |
| 843 | struct sal_proto_family *pf; |
| 844 | |
| 845 | /* get the socket object by socket descriptor */ |
| 846 | SAL_SOCKET_OBJ_GET(sock, socket); |
| 847 | |
| 848 | /* check the network interface socket opreation */ |
| 849 | SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, setsockopt); |
| 850 | |
| 851 | #ifdef SAL_USING_TLS |
| 852 | if (level == SOL_TLS) |
| 853 | { |
| 854 | switch (optname) |
| 855 | { |
| 856 | case TLS_CRET_LIST: |
| 857 | SAL_SOCKOPT_PROTO_TLS_EXEC(sock, set_cret_list, optval, optlen); |
| 858 | break; |
| 859 | |
| 860 | case TLS_CIPHERSUITE_LIST: |
| 861 | SAL_SOCKOPT_PROTO_TLS_EXEC(sock, set_ciphersurite, optval, optlen); |
| 862 | break; |
| 863 | |
| 864 | case TLS_PEER_VERIFY: |
| 865 | SAL_SOCKOPT_PROTO_TLS_EXEC(sock, set_peer_verify, optval, optlen); |
| 866 | break; |
| 867 | |
| 868 | case TLS_DTLS_ROLE: |
| 869 | SAL_SOCKOPT_PROTO_TLS_EXEC(sock, set_dtls_role, optval, optlen); |
| 870 | break; |
| 871 | |
| 872 | default: |
| 873 | return -1; |
| 874 | } |
| 875 | |
| 876 | return 0; |
| 877 | } |
| 878 | else |
| 879 | { |
| 880 | return pf->skt_ops->setsockopt((int)sock->user_data, level, optname, optval, optlen); |
| 881 | } |
| 882 | #else |
| 883 | return pf->skt_ops->setsockopt((int)(size_t)sock->user_data, level, optname, optval, optlen); |
| 884 | #endif /* SAL_USING_TLS */ |
| 885 | } |
| 886 | |
| 887 | int sal_connect(int socket, const struct sockaddr *name, socklen_t namelen) |
| 888 | { |
no outgoing calls
no test coverage detected