Changeset e417b96 in mainline for uspace/srv/net/tl


Ignore:
Timestamp:
2010-03-23T22:58:44Z (16 years ago)
Author:
Lukas Mejdrech <lukasmejdrech@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
5814ef7
Parents:
76ca3f7
Message:

IPC_[SG]ET_ARG macros refactored to be more explicit and safer

Location:
uspace/srv/net/tl
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/tl/icmp/icmp_messages.h

    r76ca3f7 re417b96  
    8282 *  @param[in] call The message call structure.
    8383 */
    84 #define ICMP_GET_CODE(call)             (icmp_code_t) IPC_GET_ARG1(*call)
     84#define ICMP_GET_CODE(call) \
     85        ({icmp_code_t code = (icmp_code_t) IPC_GET_ARG1(*call); code;})
    8586
    8687/** Returns the ICMP link MTU message parameter.
    8788 *  @param[in] call The message call structure.
    8889 */
    89 #define ICMP_GET_MTU(call)              (icmp_param_t) IPC_GET_ARG3(*call)
     90#define ICMP_GET_MTU(call) \
     91        ({icmp_param_t mtu = (icmp_param_t) IPC_GET_ARG3(*call); mtu;})
    9092
    9193/** Returns the pointer message parameter.
    9294 *  @param[in] call The message call structure.
    9395 */
    94 #define ICMP_GET_POINTER(call)          (icmp_param_t) IPC_GET_ARG3(*call)
     96#define ICMP_GET_POINTER(call) \
     97        ({icmp_param_t pointer = (icmp_param_t) IPC_GET_ARG3(*call); pointer;})
    9598
    9699/** Returns the size message parameter.
    97100 *  @param[in] call The message call structure.
    98101 */
    99 #define ICMP_GET_SIZE(call)     (size_t) IPC_GET_ARG1(call)
     102#define ICMP_GET_SIZE(call) \
     103        ({size_t size = (size_t) IPC_GET_ARG1(call); size;})
    100104
    101105/** Returns the timeout message parameter.
    102106 *  @param[in] call The message call structure.
    103107 */
    104 #define ICMP_GET_TIMEOUT(call)  ((suseconds_t) IPC_GET_ARG2(call))
     108#define ICMP_GET_TIMEOUT(call) \
     109        (({suseconds_t timeout = (suseconds_t) IPC_GET_ARG2(call); timeout;}))
    105110
    106111/** Returns the time to live message parameter.
    107112 *  @param[in] call The message call structure.
    108113 */
    109 #define ICMP_GET_TTL(call)      (ip_ttl_t) IPC_GET_ARG3(call)
     114#define ICMP_GET_TTL(call) \
     115        ({ip_ttl_t ttl = (ip_ttl_t) IPC_GET_ARG3(call); ttl;})
    110116
    111117/** Returns the type of service message parameter.
    112118 *  @param[in] call The message call structure.
    113119 */
    114 #define ICMP_GET_TOS(call)      (ip_tos_t) IPC_GET_ARG4(call)
     120#define ICMP_GET_TOS(call) \
     121        ({ip_tos_t tos = (ip_tos_t) IPC_GET_ARG4(call); tos;})
    115122
    116123/** Returns the dont fragment message parameter.
    117124 *  @param[in] call The message call structure.
    118125 */
    119 #define ICMP_GET_DONT_FRAGMENT(call)            (int) IPC_GET_ARG5(call)
     126#define ICMP_GET_DONT_FRAGMENT(call) \
     127        ({int dont_fragment = (int) IPC_GET_ARG5(call); dont_fragment;})
    120128
    121129/*@}*/
  • uspace/srv/net/tl/tcp/tcp.c

    r76ca3f7 re417b96  
    10621062        int socket_id;
    10631063        size_t addrlen;
     1064        size_t size;
    10641065        fibril_rwlock_t lock;
    10651066        ipc_call_t answer;
     
    11071108                                        socket_id = SOCKET_GET_SOCKET_ID(call);
    11081109                                        res = socket_create(&local_sockets, app_phone, socket_data, &socket_id);
    1109                                         *SOCKET_SET_SOCKET_ID(answer) = socket_id;
     1110                                        SOCKET_SET_SOCKET_ID(answer, socket_id);
    11101111                                        fibril_rwlock_write_unlock(&lock);
    11111112                                        if(res == EOK){
    11121113                                                if(tl_get_ip_packet_dimension(tcp_globals.ip_phone, &tcp_globals.dimensions, DEVICE_INVALID_ID, &packet_dimension) == EOK){
    1113                                                         *SOCKET_SET_DATA_FRAGMENT_SIZE(answer) = ((packet_dimension->content < socket_data->data_fragment_size) ? packet_dimension->content : socket_data->data_fragment_size);
     1114                                                        SOCKET_SET_DATA_FRAGMENT_SIZE(answer, ((packet_dimension->content < socket_data->data_fragment_size) ? packet_dimension->content : socket_data->data_fragment_size));
    11141115                                                }
    1115 //                                              *SOCKET_SET_DATA_FRAGMENT_SIZE(answer) = MAX_TCP_FRAGMENT_SIZE;
    1116                                                 *SOCKET_SET_HEADER_SIZE(answer) = TCP_HEADER_SIZE;
     1116//                                              SOCKET_SET_DATA_FRAGMENT_SIZE(answer, MAX_TCP_FRAGMENT_SIZE);
     1117                                                SOCKET_SET_HEADER_SIZE(answer, TCP_HEADER_SIZE);
    11171118                                                answer_count = 3;
    11181119                                        }else{
     
    11661167                                fibril_rwlock_read_lock(&tcp_globals.lock);
    11671168                                fibril_rwlock_write_lock(&lock);
    1168                                 res = tcp_accept_message(&local_sockets, SOCKET_GET_SOCKET_ID(call), SOCKET_GET_NEW_SOCKET_ID(call), SOCKET_SET_DATA_FRAGMENT_SIZE(answer), &addrlen);
     1169                                res = tcp_accept_message(&local_sockets, SOCKET_GET_SOCKET_ID(call), SOCKET_GET_NEW_SOCKET_ID(call), &size, &addrlen);
     1170                                SOCKET_SET_DATA_FRAGMENT_SIZE(answer, size);
    11691171                                fibril_rwlock_write_unlock(&lock);
    11701172                                fibril_rwlock_read_unlock(&tcp_globals.lock);
    11711173                                if(res > 0){
    1172                                         *SOCKET_SET_SOCKET_ID(answer) = res;
    1173                                         *SOCKET_SET_ADDRESS_LENGTH(answer) = addrlen;
     1174                                        SOCKET_SET_SOCKET_ID(answer, res);
     1175                                        SOCKET_SET_ADDRESS_LENGTH(answer, addrlen);
    11741176                                        answer_count = 3;
    11751177                                }
     
    11781180                                fibril_rwlock_read_lock(&tcp_globals.lock);
    11791181                                fibril_rwlock_write_lock(&lock);
    1180                                 res = tcp_send_message(&local_sockets, SOCKET_GET_SOCKET_ID(call), SOCKET_GET_DATA_FRAGMENTS(call), SOCKET_SET_DATA_FRAGMENT_SIZE(answer), SOCKET_GET_FLAGS(call));
     1182                                res = tcp_send_message(&local_sockets, SOCKET_GET_SOCKET_ID(call), SOCKET_GET_DATA_FRAGMENTS(call), &size, SOCKET_GET_FLAGS(call));
     1183                                SOCKET_SET_DATA_FRAGMENT_SIZE(answer, size);
    11811184                                if(res != EOK){
    11821185                                        fibril_rwlock_write_unlock(&lock);
     
    11911194                                        fibril_rwlock_read_lock(&tcp_globals.lock);
    11921195                                        fibril_rwlock_write_lock(&lock);
    1193                                         res = tcp_send_message(&local_sockets, SOCKET_GET_SOCKET_ID(call), SOCKET_GET_DATA_FRAGMENTS(call), SOCKET_SET_DATA_FRAGMENT_SIZE(answer), SOCKET_GET_FLAGS(call));
     1196                                        res = tcp_send_message(&local_sockets, SOCKET_GET_SOCKET_ID(call), SOCKET_GET_DATA_FRAGMENTS(call), &size, SOCKET_GET_FLAGS(call));
     1197                                        SOCKET_SET_DATA_FRAGMENT_SIZE(answer, size);
    11941198                                        if(res != EOK){
    11951199                                                fibril_rwlock_write_unlock(&lock);
     
    12081212                                fibril_rwlock_read_unlock(&tcp_globals.lock);
    12091213                                if(res > 0){
    1210                                         *SOCKET_SET_READ_DATA_LENGTH(answer) = res;
     1214                                        SOCKET_SET_READ_DATA_LENGTH(answer, res);
    12111215                                        answer_count = 1;
    12121216                                        res = EOK;
     
    12201224                                fibril_rwlock_read_unlock(&tcp_globals.lock);
    12211225                                if(res > 0){
    1222                                         *SOCKET_SET_READ_DATA_LENGTH(answer) = res;
    1223                                         *SOCKET_SET_ADDRESS_LENGTH(answer) = addrlen;
     1226                                        SOCKET_SET_READ_DATA_LENGTH(answer, res);
     1227                                        SOCKET_SET_ADDRESS_LENGTH(answer, addrlen);
    12241228                                        answer_count = 3;
    12251229                                        res = EOK;
  • uspace/srv/net/tl/udp/udp.c

    r76ca3f7 re417b96  
    419419        int socket_id;
    420420        size_t addrlen;
     421        size_t size;
    421422        ipc_call_t answer;
    422423        int answer_count;
     
    454455                                socket_id = SOCKET_GET_SOCKET_ID(call);
    455456                                res = socket_create(&local_sockets, app_phone, NULL, &socket_id);
    456                                 *SOCKET_SET_SOCKET_ID(answer) = socket_id;
    457                                
     457                                SOCKET_SET_SOCKET_ID(answer, socket_id);
     458
    458459                                if(res == EOK){
    459460                                        if(tl_get_ip_packet_dimension(udp_globals.ip_phone, &udp_globals.dimensions, DEVICE_INVALID_ID, &packet_dimension) == EOK){
    460                                                 *SOCKET_SET_DATA_FRAGMENT_SIZE(answer) = packet_dimension->content;
     461                                                SOCKET_SET_DATA_FRAGMENT_SIZE(answer, packet_dimension->content);
    461462                                        }
    462 //                                      *SOCKET_SET_DATA_FRAGMENT_SIZE(answer) = MAX_UDP_FRAGMENT_SIZE;
    463                                         *SOCKET_SET_HEADER_SIZE(answer) = UDP_HEADER_SIZE;
     463//                                      SOCKET_SET_DATA_FRAGMENT_SIZE(answer, MAX_UDP_FRAGMENT_SIZE);
     464                                        SOCKET_SET_HEADER_SIZE(answer, UDP_HEADER_SIZE);
    464465                                        answer_count = 3;
    465466                                }
     
    478479                                if(res == EOK){
    479480                                        fibril_rwlock_write_lock(&udp_globals.lock);
    480                                         res = udp_sendto_message(&local_sockets, SOCKET_GET_SOCKET_ID(call), addr, addrlen, SOCKET_GET_DATA_FRAGMENTS(call), SOCKET_SET_DATA_FRAGMENT_SIZE(answer), SOCKET_GET_FLAGS(call));
     481                                        res = udp_sendto_message(&local_sockets, SOCKET_GET_SOCKET_ID(call), addr, addrlen, SOCKET_GET_DATA_FRAGMENTS(call), &size, SOCKET_GET_FLAGS(call));
     482                                        SOCKET_SET_DATA_FRAGMENT_SIZE(answer, size);
    481483                                        if(res != EOK){
    482484                                                fibril_rwlock_write_unlock(&udp_globals.lock);
     
    492494                                fibril_rwlock_write_unlock(&udp_globals.lock);
    493495                                if(res > 0){
    494                                         *SOCKET_SET_READ_DATA_LENGTH(answer) = res;
    495                                         *SOCKET_SET_ADDRESS_LENGTH(answer) = addrlen;
     496                                        SOCKET_SET_READ_DATA_LENGTH(answer, res);
     497                                        SOCKET_SET_ADDRESS_LENGTH(answer, addrlen);
    496498                                        answer_count = 3;
    497499                                        res = EOK;
Note: See TracChangeset for help on using the changeset viewer.