Ignore:
Timestamp:
2010-11-19T23:50:06Z (13 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
46d4d9f
Parents:
b4c9c61 (diff), a9c6b966 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/net/socket_client.c

    rb4c9c61 rfdbc3ff  
    7979typedef struct socket socket_t;
    8080
    81 /** Type definition of the socket specific data pointer.
    82  * @see socket
    83  */
    84 typedef socket_t *socket_ref;
    85 
    8681/** Socket specific data.
    8782 *
     
    162157
    163158        /** Active sockets. */
    164         sockets_ref sockets;
     159        sockets_t *sockets;
    165160
    166161        /** Safety lock.
     
    183178/** Returns the active sockets.
    184179 *
    185  *  @returns            The active sockets.
    186  */
    187 static sockets_ref socket_get_sockets(void)
     180 *  @return             The active sockets.
     181 */
     182static sockets_t *socket_get_sockets(void)
    188183{
    189184        if (!socket_globals.sockets) {
    190185                socket_globals.sockets =
    191                     (sockets_ref) malloc(sizeof(sockets_t));
     186                    (sockets_t *) malloc(sizeof(sockets_t));
    192187                if (!socket_globals.sockets)
    193188                        return NULL;
     
    213208        ipc_callid_t callid;
    214209        ipc_call_t call;
    215         socket_ref socket;
     210        socket_t *socket;
    216211        int rc;
    217212
     
    291286 * Connects to the TCP module if necessary.
    292287 *
    293  * @returns             The TCP module phone.
    294  * @returns             Other error codes as defined for the
     288 * @return              The TCP module phone.
     289 * @return              Other error codes as defined for the
    295290 *                      bind_service_timeout() function.
    296291 */
     
    310305 * Connects to the UDP module if necessary.
    311306 *
    312  * @returns             The UDP module phone.
    313  * @returns             Other error codes as defined for the
     307 * @return              The UDP module phone.
     308 * @return              Other error codes as defined for the
    314309 *                      bind_service_timeout() function.
    315310 */
     
    327322/** Tries to find a new free socket identifier.
    328323 *
    329  * @returns             The new socket identifier.
    330  * @returns             ELIMIT if there is no socket identifier available.
     324 * @return              The new socket identifier.
     325 * @return              ELIMIT if there is no socket identifier available.
    331326 */
    332327static int socket_generate_new_id(void)
    333328{
    334         sockets_ref sockets;
     329        sockets_t *sockets;
    335330        int socket_id = 0;
    336331        int count;
     
    372367 */
    373368static void
    374 socket_initialize(socket_ref socket, int socket_id, int phone,
     369socket_initialize(socket_t *socket, int socket_id, int phone,
    375370    services_t service)
    376371{
     
    392387 * @param[in] type      Socket type.
    393388 * @param[in] protocol  Socket protocol.
    394  * @returns             The socket identifier on success.
    395  * @returns             EPFNOTSUPPORT if the protocol family is not supported.
    396  * @returns             ESOCKNOTSUPPORT if the socket type is not supported.
    397  * @returns             EPROTONOSUPPORT if the protocol is not supported.
    398  * @returns             ENOMEM if there is not enough memory left.
    399  * @returns             ELIMIT if there was not a free socket identifier found
     389 * @return              The socket identifier on success.
     390 * @return              EPFNOTSUPPORT if the protocol family is not supported.
     391 * @return              ESOCKNOTSUPPORT if the socket type is not supported.
     392 * @return              EPROTONOSUPPORT if the protocol is not supported.
     393 * @return              ENOMEM if there is not enough memory left.
     394 * @return              ELIMIT if there was not a free socket identifier found
    400395 *                      this time.
    401  * @returns             Other error codes as defined for the NET_SOCKET message.
    402  * @returns             Other error codes as defined for the
     396 * @return              Other error codes as defined for the NET_SOCKET message.
     397 * @return              Other error codes as defined for the
    403398 *                      bind_service_timeout() function.
    404399 */
    405400int socket(int domain, int type, int protocol)
    406401{
    407         socket_ref socket;
     402        socket_t *socket;
    408403        int phone;
    409404        int socket_id;
     
    463458
    464459        // create a new socket structure
    465         socket = (socket_ref) malloc(sizeof(socket_t));
     460        socket = (socket_t *) malloc(sizeof(socket_t));
    466461        if (!socket)
    467462                return ENOMEM;
     
    514509 * @param[in] data      The data to be sent.
    515510 * @param[in] datalength The data length.
    516  * @returns             EOK on success.
    517  * @returns             ENOTSOCK if the socket is not found.
    518  * @returns             EBADMEM if the data parameter is NULL.
    519  * @returns             NO_DATA if the datalength parameter is zero (0).
    520  * @returns             Other error codes as defined for the spcific message.
     511 * @return              EOK on success.
     512 * @return              ENOTSOCK if the socket is not found.
     513 * @return              EBADMEM if the data parameter is NULL.
     514 * @return              NO_DATA if the datalength parameter is zero (0).
     515 * @return              Other error codes as defined for the spcific message.
    521516 */
    522517static int
     
    524519    const void *data, size_t datalength)
    525520{
    526         socket_ref socket;
     521        socket_t *socket;
    527522        aid_t message_id;
    528523        ipcarg_t result;
     
    559554 * @param[in] my_addr   The port address.
    560555 * @param[in] addrlen   The address length.
    561  * @returns             EOK on success.
    562  * @returns             ENOTSOCK if the socket is not found.
    563  * @returns             EBADMEM if the my_addr parameter is NULL.
    564  * @returns             NO_DATA if the addlen parameter is zero.
    565  * @returns             Other error codes as defined for the NET_SOCKET_BIND
     556 * @return              EOK on success.
     557 * @return              ENOTSOCK if the socket is not found.
     558 * @return              EBADMEM if the my_addr parameter is NULL.
     559 * @return              NO_DATA if the addlen parameter is zero.
     560 * @return              Other error codes as defined for the NET_SOCKET_BIND
    566561 *                      message.
    567562 */
     
    580575 * @param[in] socket_id Socket identifier.
    581576 * @param[in] backlog   The maximum number of waiting sockets to be accepted.
    582  * @returns             EOK on success.
    583  * @returns             EINVAL if the backlog parameter is not positive (<=0).
    584  * @returns             ENOTSOCK if the socket is not found.
    585  * @returns             Other error codes as defined for the NET_SOCKET_LISTEN
     577 * @return              EOK on success.
     578 * @return              EINVAL if the backlog parameter is not positive (<=0).
     579 * @return              ENOTSOCK if the socket is not found.
     580 * @return              Other error codes as defined for the NET_SOCKET_LISTEN
    586581 *                      message.
    587582 */
    588583int listen(int socket_id, int backlog)
    589584{
    590         socket_ref socket;
     585        socket_t *socket;
    591586        int result;
    592587
     
    618613 * @param[out] cliaddr  The remote client address.
    619614 * @param[in] addrlen   The address length.
    620  * @returns             EOK on success.
    621  * @returns             EBADMEM if the cliaddr or addrlen parameter is NULL.
    622  * @returns             EINVAL if the backlog parameter is not positive (<=0).
    623  * @returns             ENOTSOCK if the socket is not found.
    624  * @returns             Other error codes as defined for the NET_SOCKET_ACCEPT
     615 * @return              EOK on success.
     616 * @return              EBADMEM if the cliaddr or addrlen parameter is NULL.
     617 * @return              EINVAL if the backlog parameter is not positive (<=0).
     618 * @return              ENOTSOCK if the socket is not found.
     619 * @return              Other error codes as defined for the NET_SOCKET_ACCEPT
    625620 *                      message.
    626621 */
    627622int accept(int socket_id, struct sockaddr * cliaddr, socklen_t * addrlen)
    628623{
    629         socket_ref socket;
    630         socket_ref new_socket;
     624        socket_t *socket;
     625        socket_t *new_socket;
    631626        aid_t message_id;
    632627        ipcarg_t ipc_result;
     
    661656
    662657        // create a new scoket
    663         new_socket = (socket_ref) malloc(sizeof(socket_t));
     658        new_socket = (socket_t *) malloc(sizeof(socket_t));
    664659        if (!new_socket) {
    665660                fibril_mutex_unlock(&socket->accept_lock);
     
    721716 * @param[in] serv_addr The remote server address.
    722717 * @param[in] addrlen   The address length.
    723  * @returns             EOK on success.
    724  * @returns             EBADMEM if the serv_addr parameter is NULL.
    725  * @returns             NO_DATA if the addlen parameter is zero.
    726  * @returns             ENOTSOCK if the socket is not found.
    727  * @returns             Other error codes as defined for the NET_SOCKET_CONNECT
     718 * @return              EOK on success.
     719 * @return              EBADMEM if the serv_addr parameter is NULL.
     720 * @return              NO_DATA if the addlen parameter is zero.
     721 * @return              ENOTSOCK if the socket is not found.
     722 * @return              Other error codes as defined for the NET_SOCKET_CONNECT
    728723 *                      message.
    729724 */
     
    745740 * @param[in] socket    The socket to be destroyed.
    746741 */
    747 static void socket_destroy(socket_ref socket)
     742static void socket_destroy(socket_t *socket)
    748743{
    749744        int accepted_id;
     
    761756 *
    762757 * @param[in] socket_id Socket identifier.
    763  * @returns             EOK on success.
    764  * @returns             ENOTSOCK if the socket is not found.
    765  * @returns             EINPROGRESS if there is another blocking function in
     758 * @return              EOK on success.
     759 * @return              ENOTSOCK if the socket is not found.
     760 * @return              EINPROGRESS if there is another blocking function in
    766761 *                      progress.
    767  * @returns             Other error codes as defined for the NET_SOCKET_CLOSE
     762 * @return              Other error codes as defined for the NET_SOCKET_CLOSE
    768763 *                      message.
    769764 */
    770765int closesocket(int socket_id)
    771766{
    772         socket_ref socket;
     767        socket_t *socket;
    773768        int rc;
    774769
     
    811806 *                      sockets.
    812807 * @param[in] addrlen   The address length. Used only if toaddr is not NULL.
    813  * @returns             EOK on success.
    814  * @returns             ENOTSOCK if the socket is not found.
    815  * @returns             EBADMEM if the data or toaddr parameter is NULL.
    816  * @returns             NO_DATA if the datalength or the addrlen parameter is
     808 * @return              EOK on success.
     809 * @return              ENOTSOCK if the socket is not found.
     810 * @return              EBADMEM if the data or toaddr parameter is NULL.
     811 * @return              NO_DATA if the datalength or the addrlen parameter is
    817812 *                      zero (0).
    818  * @returns             Other error codes as defined for the NET_SOCKET_SENDTO
     813 * @return              Other error codes as defined for the NET_SOCKET_SENDTO
    819814 *                      message.
    820815 */
     
    824819    socklen_t addrlen)
    825820{
    826         socket_ref socket;
     821        socket_t *socket;
    827822        aid_t message_id;
    828823        ipcarg_t result;
     
    913908 * @param[in] datalength The data length.
    914909 * @param[in] flags     Various send flags.
    915  * @returns             EOK on success.
    916  * @returns             ENOTSOCK if the socket is not found.
    917  * @returns             EBADMEM if the data parameter is NULL.
    918  * @returns             NO_DATA if the datalength parameter is zero.
    919  * @returns             Other error codes as defined for the NET_SOCKET_SEND
     910 * @return              EOK on success.
     911 * @return              ENOTSOCK if the socket is not found.
     912 * @return              EBADMEM if the data parameter is NULL.
     913 * @return              NO_DATA if the datalength parameter is zero.
     914 * @return              Other error codes as defined for the NET_SOCKET_SEND
    920915 *                      message.
    921916 */
     
    937932 * @param[in] toaddr    The destination address.
    938933 * @param[in] addrlen   The address length.
    939  * @returns             EOK on success.
    940  * @returns             ENOTSOCK if the socket is not found.
    941  * @returns             EBADMEM if the data or toaddr parameter is NULL.
    942  * @returns             NO_DATA if the datalength or the addrlen parameter is
     934 * @return              EOK on success.
     935 * @return              ENOTSOCK if the socket is not found.
     936 * @return              EBADMEM if the data or toaddr parameter is NULL.
     937 * @return              NO_DATA if the datalength or the addrlen parameter is
    943938 *                      zero.
    944  * @returns             Other error codes as defined for the NET_SOCKET_SENDTO
     939 * @return              Other error codes as defined for the NET_SOCKET_SENDTO
    945940 *                      message.
    946941 */
     
    971966 *                      read. The actual address length is set. Used only if
    972967 *                      fromaddr is not NULL.
    973  * @returns             EOK on success.
    974  * @returns             ENOTSOCK if the socket is not found.
    975  * @returns             EBADMEM if the data parameter is NULL.
    976  * @returns             NO_DATA if the datalength or addrlen parameter is zero.
    977  * @returns             Other error codes as defined for the spcific message.
     968 * @return              EOK on success.
     969 * @return              ENOTSOCK if the socket is not found.
     970 * @return              EBADMEM if the data parameter is NULL.
     971 * @return              NO_DATA if the datalength or addrlen parameter is zero.
     972 * @return              Other error codes as defined for the spcific message.
    978973 */
    979974static int
     
    981976    int flags, struct sockaddr *fromaddr, socklen_t *addrlen)
    982977{
    983         socket_ref socket;
     978        socket_t *socket;
    984979        aid_t message_id;
    985980        ipcarg_t ipc_result;
     
    11001095 * @param[in] datalength The data length.
    11011096 * @param[in] flags     Various receive flags.
    1102  * @returns             EOK on success.
    1103  * @returns             ENOTSOCK if the socket is not found.
    1104  * @returns             EBADMEM if the data parameter is NULL.
    1105  * @returns             NO_DATA if the datalength parameter is zero.
    1106  * @returns             Other error codes as defined for the NET_SOCKET_RECV
     1097 * @return              EOK on success.
     1098 * @return              ENOTSOCK if the socket is not found.
     1099 * @return              EBADMEM if the data parameter is NULL.
     1100 * @return              NO_DATA if the datalength parameter is zero.
     1101 * @return              Other error codes as defined for the NET_SOCKET_RECV
    11071102 *                      message.
    11081103 */
     
    11231118 * @param[in,out] addrlen The address length. The maximum address length is
    11241119 *                      read. The actual address length is set.
    1125  * @returns             EOK on success.
    1126  * @returns             ENOTSOCK if the socket is not found.
    1127  * @returns             EBADMEM if the data or fromaddr parameter is NULL.
    1128  * @returns             NO_DATA if the datalength or addrlen parameter is zero.
    1129  * @returns             Other error codes as defined for the NET_SOCKET_RECVFROM
     1120 * @return              EOK on success.
     1121 * @return              ENOTSOCK if the socket is not found.
     1122 * @return              EBADMEM if the data or fromaddr parameter is NULL.
     1123 * @return              NO_DATA if the datalength or addrlen parameter is zero.
     1124 * @return              Other error codes as defined for the NET_SOCKET_RECVFROM
    11301125 *                      message.
    11311126 */
     
    11531148 * @param[in,out] optlen The value buffer length. The maximum length is read.
    11541149 *                      The actual length is set.
    1155  * @returns             EOK on success.
    1156  * @returns             ENOTSOCK if the socket is not found.
    1157  * @returns             EBADMEM if the value or optlen parameter is NULL.
    1158  * @returns             NO_DATA if the optlen parameter is zero.
    1159  * @returns             Other error codes as defined for the
     1150 * @return              EOK on success.
     1151 * @return              ENOTSOCK if the socket is not found.
     1152 * @return              EBADMEM if the value or optlen parameter is NULL.
     1153 * @return              NO_DATA if the optlen parameter is zero.
     1154 * @return              Other error codes as defined for the
    11601155 *                      NET_SOCKET_GETSOCKOPT message.
    11611156 */
     
    11631158getsockopt(int socket_id, int level, int optname, void *value, size_t *optlen)
    11641159{
    1165         socket_ref socket;
     1160        socket_t *socket;
    11661161        aid_t message_id;
    11671162        ipcarg_t result;
     
    12061201 * @param[in] value     The value to be set.
    12071202 * @param[in] optlen    The value length.
    1208  * @returns             EOK on success.
    1209  * @returns             ENOTSOCK if the socket is not found.
    1210  * @returns             EBADMEM if the value parameter is NULL.
    1211  * @returns             NO_DATA if the optlen parameter is zero.
    1212  * @returns             Other error codes as defined for the
     1203 * @return              EOK on success.
     1204 * @return              ENOTSOCK if the socket is not found.
     1205 * @return              EBADMEM if the value parameter is NULL.
     1206 * @return              NO_DATA if the optlen parameter is zero.
     1207 * @return              Other error codes as defined for the
    12131208 *                      NET_SOCKET_SETSOCKOPT message.
    12141209 */
Note: See TracChangeset for help on using the changeset viewer.