Changeset 40e29f5 in mainline
- Timestamp:
- 2010-03-24T18:54:50Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- eaf22d4
- Parents:
- 63f8966 (diff), 3db8889 (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. - Location:
- uspace/srv/net
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/il/arp/arp_messages.h
r63f8966 r40e29f5 75 75 * @param[in] call The message call structure. 76 76 */ 77 #define ARP_GET_NETIF(call) (services_t) IPC_GET_ARG2(*call) 77 #define ARP_GET_NETIF(call) \ 78 ({services_t service = (services_t) IPC_GET_ARG2(*call); service;}) 78 79 79 80 /*@}*/ -
uspace/srv/net/il/ip/ip.c
r63f8966 r40e29f5 893 893 struct sockaddr * addr; 894 894 size_t addrlen; 895 size_t prefix; 896 size_t suffix; 897 size_t content; 895 898 ip_pseudo_header_ref header; 896 899 size_t headerlen; … … 924 927 ERROR_PROPAGATE(ip_get_route_req(0, IP_GET_PROTOCOL(call), addr, (socklen_t) addrlen, 925 928 &device_id, &header, &headerlen)); 926 *IPC_SET_DEVICE(answer) = device_id;927 *IP_SET_HEADERLEN(answer) = headerlen;929 IPC_SET_DEVICE(answer, device_id); 930 IP_SET_HEADERLEN(answer, headerlen); 928 931 *answer_count = 2; 929 932 if(! ERROR_OCCURRED(data_reply(&headerlen, sizeof(headerlen)))){ … … 933 936 return ERROR_CODE; 934 937 case NET_IL_PACKET_SPACE: 935 ERROR_PROPAGATE(ip_packet_size_message(IPC_GET_DEVICE(call), IPC_SET_ADDR(answer), IPC_SET_PREFIX(answer), IPC_SET_CONTENT(answer), IPC_SET_SUFFIX(answer))); 936 *answer_count = 3; 938 ERROR_PROPAGATE(ip_packet_size_message(IPC_GET_DEVICE(call), &addrlen, &prefix, &content, &suffix)); 939 IPC_SET_ADDR(answer, addrlen); 940 IPC_SET_PREFIX(answer, prefix); 941 IPC_SET_CONTENT(answer, content); 942 IPC_SET_SUFFIX(answer, suffix); 943 *answer_count = 4; 937 944 return EOK; 938 945 case NET_IL_MTU_CHANGED: -
uspace/srv/net/il/ip/ip_messages.h
r63f8966 r40e29f5 72 72 * @param[in] call The message call structure. 73 73 */ 74 #define IP_GET_ADDRESS(call) ({in_addr_t addr; addr.s_addr = IPC_GET_ARG3(*call); addr;}) 74 #define IP_GET_ADDRESS(call) \ 75 ({in_addr_t addr; addr.s_addr = IPC_GET_ARG3(*call); addr;}) 75 76 76 77 /** Returns the gateway message parameter. 77 78 * @param[in] call The message call structure. 78 79 */ 79 #define IP_GET_GATEWAY(call) ({in_addr_t addr; addr.s_addr = IPC_GET_ARG2(*call); addr;}) 80 #define IP_GET_GATEWAY(call) \ 81 ({in_addr_t addr; addr.s_addr = IPC_GET_ARG2(*call); addr;}) 80 82 81 83 /** Sets the header length in the message answer. 82 84 * @param[out] answer The message answer structure. 83 85 */ 84 #define IP_SET_HEADERLEN(answer) (&IPC_GET_ARG2(*answer)) 86 #define IP_SET_HEADERLEN(answer, value) \ 87 {ipcarg_t argument = (ipcarg_t) (value); IPC_SET_ARG2(*answer, argument);} 85 88 86 89 /** Returns the network mask message parameter. 87 90 * @param[in] call The message call structure. 88 91 */ 89 #define IP_GET_NETMASK(call) ({in_addr_t addr; addr.s_addr = IPC_GET_ARG4(*call); addr;}) 92 #define IP_GET_NETMASK(call) \ 93 ({in_addr_t addr; addr.s_addr = IPC_GET_ARG4(*call); addr;}) 90 94 91 95 /** Returns the protocol message parameter. 92 96 * @param[in] call The message call structure. 93 97 */ 94 #define IP_GET_PROTOCOL(call) ((ip_protocol_t) IPC_GET_ARG1(*call)) 98 #define IP_GET_PROTOCOL(call) \ 99 ({ip_protocol_t protocol = (ip_protocol_t) IPC_GET_ARG1(*call); protocol;}) 95 100 96 101 /*@}*/ -
uspace/srv/net/messages.h
r63f8966 r40e29f5 236 236 * @param[in] call The IPC call to be checked. 237 237 */ 238 #define IS_NET_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_FIRST, NET_LAST) 238 #define IS_NET_MESSAGE(call) \ 239 IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_FIRST, NET_LAST) 239 240 240 241 /** Returns a value indicating whether the IPC call is an ARP message. 241 242 * @param[in] call The IPC call to be checked. 242 243 */ 243 #define IS_NET_ARP_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_ARP_FIRST, NET_ARP_LAST) 244 #define IS_NET_ARP_MESSAGE(call) \ 245 IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_ARP_FIRST, NET_ARP_LAST) 244 246 245 247 /** Returns a value indicating whether the IPC call is an Ethernet message. 246 248 * @param[in] call The IPC call to be checked. 247 249 */ 248 #define IS_NET_ETH_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_ETH_FIRST, NET_ETH_LAST) 250 #define IS_NET_ETH_MESSAGE(call) \ 251 IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_ETH_FIRST, NET_ETH_LAST) 249 252 250 253 /** Returns a value indicating whether the IPC call is an ICMP message. 251 254 * @param[in] call The IPC call to be checked. 252 255 */ 253 #define IS_NET_ICMP_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_ICMP_FIRST, NET_ICMP_LAST) 256 #define IS_NET_ICMP_MESSAGE(call) \ 257 IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_ICMP_FIRST, NET_ICMP_LAST) 254 258 255 259 /** Returns a value indicating whether the IPC call is an inter-network layer message. 256 260 * @param[in] call The IPC call to be checked. 257 261 */ 258 #define IS_NET_IL_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_IL_FIRST, NET_IL_LAST) 262 #define IS_NET_IL_MESSAGE(call) \ 263 IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_IL_FIRST, NET_IL_LAST) 259 264 260 265 /** Returns a value indicating whether the IPC call is an IP message. 261 266 * @param[in] call The IPC call to be checked. 262 267 */ 263 #define IS_NET_IP_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_IP_FIRST, NET_IP_LAST) 268 #define IS_NET_IP_MESSAGE(call) \ 269 IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_IP_FIRST, NET_IP_LAST) 264 270 265 271 /** Returns a value indicating whether the IPC call is a generic networking message. 266 272 * @param[in] call The IPC call to be checked. 267 273 */ 268 #define IS_NET_NET_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_NET_FIRST, NET_NET_LAST) 274 #define IS_NET_NET_MESSAGE(call) \ 275 IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_NET_FIRST, NET_NET_LAST) 269 276 270 277 /** Returns a value indicating whether the IPC call is a network interface layer message. 271 278 * @param[in] call The IPC call to be checked. 272 279 */ 273 #define IS_NET_NIL_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_NIL_FIRST, NET_NIL_LAST) 280 #define IS_NET_NIL_MESSAGE(call) \ 281 IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_NIL_FIRST, NET_NIL_LAST) 274 282 275 283 /** Returns a value indicating whether the IPC call is a packet manaagement system message. 276 284 * @param[in] call The IPC call to be checked. 277 285 */ 278 #define IS_NET_PACKET_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_PACKET_FIRST, NET_PACKET_LAST) 286 #define IS_NET_PACKET_MESSAGE(call) \ 287 IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_PACKET_FIRST, NET_PACKET_LAST) 279 288 280 289 /** Returns a value indicating whether the IPC call is a socket message. 281 290 * @param[in] call The IPC call to be checked. 282 291 */ 283 #define IS_NET_SOCKET_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_SOCKET_FIRST, NET_SOCKET_LAST) 292 #define IS_NET_SOCKET_MESSAGE(call) \ 293 IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_SOCKET_FIRST, NET_SOCKET_LAST) 284 294 285 295 /** Returns a value indicating whether the IPC call is a TCP message. 286 296 * @param[in] call The IPC call to be checked. 287 297 */ 288 #define IS_NET_TCP_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_TCP_FIRST, NET_TCP_LAST) 298 #define IS_NET_TCP_MESSAGE(call) \ 299 IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_TCP_FIRST, NET_TCP_LAST) 289 300 290 301 /** Returns a value indicating whether the IPC call is a transport layer message. 291 302 * @param[in] call The IPC call to be checked. 292 303 */ 293 #define IS_NET_TL_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_TL_FIRST, NET_TL_LAST) 304 #define IS_NET_TL_MESSAGE(call) \ 305 IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_TL_FIRST, NET_TL_LAST) 294 306 295 307 /** Returns a value indicating whether the IPC call is a UDP message. 296 308 * @param[in] call The IPC call to be checked. 297 309 */ 298 #define IS_NET_UDP_MESSAGE(call) IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_UDP_FIRST, NET_UDP_LAST) 310 #define IS_NET_UDP_MESSAGE(call) \ 311 IS_IN_INTERVAL(IPC_GET_METHOD(*call), NET_UDP_FIRST, NET_UDP_LAST) 299 312 300 313 /*@}*/ … … 311 324 * @param[in] call The message call structure. 312 325 */ 313 #define IPC_GET_DEVICE(call) (device_id_t) IPC_GET_ARG1(*call) 314 315 /*@}*/ 326 #define IPC_GET_DEVICE(call) \ 327 ({device_id_t device_id = (device_id_t) IPC_GET_ARG1(*call); device_id;}) 328 329 /*@;})*/ 316 330 317 331 /** @name Second arguments 318 332 */ 319 /*@ {*/333 /*@({*/ 320 334 321 335 /** Returns the packet identifier message argument. 322 336 * @param[in] call The message call structure. 323 337 */ 324 #define IPC_GET_PACKET(call) (packet_id_t) IPC_GET_ARG2(*call) 338 #define IPC_GET_PACKET(call) \ 339 ({packet_id_t packet_id = (packet_id_t) IPC_GET_ARG2(*call); packet_id;}) 325 340 326 341 /** Returns the count message argument. 327 342 * @param[in] call The message call structure. 328 343 */ 329 #define IPC_GET_COUNT(call) (size_t) IPC_GET_ARG2(*call) 344 #define IPC_GET_COUNT(call) \ 345 ({size_t size = (size_t) IPC_GET_ARG2(*call); size;}) 330 346 331 347 /** Returns the device state message argument. 332 348 * @param[in] call The message call structure. 333 349 */ 334 #define IPC_GET_STATE(call) (device_state_t) IPC_GET_ARG2(*call) 350 #define IPC_GET_STATE(call) \ 351 ({device_state_t device_state = (device_state_t) IPC_GET_ARG2(*call); device_state;}) 335 352 336 353 /** Returns the maximum transmission unit message argument. 337 354 * @param[in] call The message call structure. 338 355 */ 339 #define IPC_GET_MTU(call) (size_t) IPC_GET_ARG2(*call) 340 341 /*@}*/ 356 #define IPC_GET_MTU(call) \ 357 ({size_t size = (size_t) IPC_GET_ARG2(*call); size;}) 358 359 /*@;})*/ 342 360 343 361 /** @name Third arguments 344 362 */ 345 /*@ {*/363 /*@({*/ 346 364 347 365 /** Returns the device driver service message argument. 348 366 * @param[in] call The message call structure. 349 367 */ 350 #define IPC_GET_SERVICE(call) (services_t) IPC_GET_ARG3(*call) 368 #define IPC_GET_SERVICE(call) \ 369 ({services_t service = (services_t) IPC_GET_ARG3(*call); service;}) 351 370 352 371 /** Returns the target service message argument. 353 372 * @param[in] call The message call structure. 354 373 */ 355 #define IPC_GET_TARGET(call) (services_t) IPC_GET_ARG3(*call) 374 #define IPC_GET_TARGET(call) \ 375 ({services_t service = (services_t) IPC_GET_ARG3(*call); service;}) 356 376 357 377 /** Returns the sender service message argument. 358 378 * @param[in] call The message call structure. 359 379 */ 360 #define IPC_GET_SENDER(call) (services_t) IPC_GET_ARG3(*call) 361 362 /*@}*/ 380 #define IPC_GET_SENDER(call) \ 381 ({services_t service = (services_t) IPC_GET_ARG3(*call); service;}) 382 383 /*@;})*/ 363 384 364 385 /** @name Fourth arguments 365 386 */ 366 /*@ {*/387 /*@({*/ 367 388 368 389 /** Returns the error service message argument. 369 390 * @param[in] call The message call structure. 370 391 */ 371 #define IPC_GET_ERROR(call) (services_t) IPC_GET_ARG4(*call) 372 373 /*@}*/ 392 #define IPC_GET_ERROR(call) \ 393 ({services_t service = (services_t) IPC_GET_ARG4(*call); service;}) 394 395 /*@;})*/ 374 396 375 397 /** @name Fifth arguments 376 398 */ 377 /*@ {*/399 /*@({*/ 378 400 379 401 /** Returns the phone message argument. 380 402 * @param[in] call The message call structure. 381 403 */ 382 #define IPC_GET_PHONE(call) (int) IPC_GET_ARG5(*call) 404 #define IPC_GET_PHONE(call) \ 405 ({int phone = (int) IPC_GET_ARG5(*call); phone;}) 383 406 384 407 /*@}*/ … … 391 414 * @param[out] answer The message answer structure. 392 415 */ 393 #define IPC_SET_DEVICE(answer) (&IPC_GET_ARG1(*answer)) 416 #define IPC_SET_DEVICE(answer, value) \ 417 {ipcarg_t argument = (ipcarg_t) (value); IPC_SET_ARG1(*answer, argument);} 394 418 395 419 /** Sets the minimum address length in the message answer. 396 420 * @param[out] answer The message answer structure. 397 421 */ 398 #define IPC_SET_ADDR(answer) (&IPC_GET_ARG1(*answer)) 422 #define IPC_SET_ADDR(answer, value) \ 423 {ipcarg_t argument = (ipcarg_t) (value); IPC_SET_ARG1(*answer, argument);} 399 424 400 425 /*@}*/ … … 407 432 * @param[out] answer The message answer structure. 408 433 */ 409 #define IPC_SET_PREFIX(answer) (&IPC_GET_ARG2(*answer)) 434 #define IPC_SET_PREFIX(answer, value) \ 435 {ipcarg_t argument = (ipcarg_t) (value); IPC_SET_ARG2(*answer, argument);} 410 436 411 437 /*@}*/ … … 418 444 * @param[out] answer The message answer structure. 419 445 */ 420 #define IPC_SET_CONTENT(answer) (&IPC_GET_ARG3(*answer)) 446 #define IPC_SET_CONTENT(answer, value) \ 447 {ipcarg_t argument = (ipcarg_t) (value); IPC_SET_ARG3(*answer, argument);} 421 448 422 449 /*@}*/ … … 429 456 * @param[out] answer The message answer structure. 430 457 */ 431 #define IPC_SET_SUFFIX(answer) (&IPC_GET_ARG4(*answer)) 458 #define IPC_SET_SUFFIX(answer, value) \ 459 {ipcarg_t argument = (ipcarg_t) (value); IPC_SET_ARG4(*answer, argument);} 432 460 433 461 /*@}*/ -
uspace/srv/net/netif/netif_messages.h
r63f8966 r40e29f5 79 79 * @param[in] call The message call structure. 80 80 */ 81 #define NETIF_GET_IRQ(call) (int) IPC_GET_ARG2(*call) 81 #define NETIF_GET_IRQ(call) \ 82 ({int irq = (int) IPC_GET_ARG2(*call); irq;}) 82 83 83 84 /** Returns the input/output address message parameter. 84 85 * @param[in] call The message call structure. 85 86 */ 86 #define NETIF_GET_IO(call) (int) IPC_GET_ARG3(*call) 87 #define NETIF_GET_IO(call) \ 88 ({int io = (int) IPC_GET_ARG3(*call); io;}) 87 89 88 90 /*@}*/ -
uspace/srv/net/nil/eth/eth.c
r63f8966 r40e29f5 709 709 measured_string_ref address; 710 710 packet_t packet; 711 size_t addrlen; 712 size_t prefix; 713 size_t suffix; 714 size_t content; 711 715 712 716 // printf("message %d - %d\n", IPC_GET_METHOD(*call), NET_NIL_FIRST); … … 721 725 return eth_send_message(IPC_GET_DEVICE(call), packet, IPC_GET_SERVICE(call)); 722 726 case NET_NIL_PACKET_SPACE: 723 ERROR_PROPAGATE(eth_packet_space_message(IPC_GET_DEVICE(call), IPC_SET_ADDR(answer), IPC_SET_PREFIX(answer), IPC_SET_CONTENT(answer), IPC_SET_SUFFIX(answer))); 727 ERROR_PROPAGATE(eth_packet_space_message(IPC_GET_DEVICE(call), &addrlen, &prefix, &content, &suffix)); 728 IPC_SET_ADDR(answer, addrlen); 729 IPC_SET_PREFIX(answer, prefix); 730 IPC_SET_CONTENT(answer, content); 731 IPC_SET_SUFFIX(answer, suffix); 724 732 *answer_count = 4; 725 733 return EOK; -
uspace/srv/net/nil/nil_messages.h
r63f8966 r40e29f5 82 82 /** Returns the protocol service message parameter. 83 83 */ 84 #define NIL_GET_PROTO(call) (services_t) IPC_GET_ARG2(*call) 84 #define NIL_GET_PROTO(call) \ 85 ({services_t service = (services_t) IPC_GET_ARG2(*call); service;}) 85 86 86 87 /*@}*/ -
uspace/srv/net/nil/nildummy/nildummy.c
r63f8966 r40e29f5 316 316 measured_string_ref address; 317 317 packet_t packet; 318 size_t addrlen; 319 size_t prefix; 320 size_t suffix; 321 size_t content; 318 322 319 323 // printf("message %d - %d\n", IPC_GET_METHOD(*call), NET_NIL_FIRST); … … 328 332 return nildummy_send_message(IPC_GET_DEVICE(call), packet, IPC_GET_SERVICE(call)); 329 333 case NET_NIL_PACKET_SPACE: 330 ERROR_PROPAGATE(nildummy_packet_space_message(IPC_GET_DEVICE(call), IPC_SET_ADDR(answer), IPC_SET_PREFIX(answer), IPC_SET_CONTENT(answer), IPC_SET_SUFFIX(answer))); 334 ERROR_PROPAGATE(nildummy_packet_space_message(IPC_GET_DEVICE(call), &addrlen, &prefix, &content, &suffix)); 335 IPC_SET_ADDR(answer, addrlen); 336 IPC_SET_PREFIX(answer, prefix); 337 IPC_SET_CONTENT(answer, content); 338 IPC_SET_SUFFIX(answer, suffix); 331 339 *answer_count = 4; 332 340 return EOK; -
uspace/srv/net/socket/socket_client.c
r63f8966 r40e29f5 421 421 int socket_id; 422 422 services_t service; 423 ipcarg_t fragment_size; 424 ipcarg_t header_size; 423 425 424 426 // find the appropriate service … … 478 480 return socket_id; 479 481 } 480 if(ERROR_OCCURRED((int) async_req_3_3(phone, NET_SOCKET, socket_id, 0, service, NULL, (ipcarg_t *) &socket->data_fragment_size, (ipcarg_t *) &socket->header_size))){482 if(ERROR_OCCURRED((int) async_req_3_3(phone, NET_SOCKET, socket_id, 0, service, NULL, &fragment_size, &header_size))){ 481 483 fibril_rwlock_write_unlock(&socket_globals.lock); 482 484 free(socket); 483 485 return ERROR_CODE; 484 486 } 487 socket->data_fragment_size = (size_t) fragment_size; 488 socket->header_size = (size_t) header_size; 485 489 // finish the new socket initialization 486 490 socket_initialize(socket, socket_id, phone, service); -
uspace/srv/net/socket/socket_messages.h
r63f8966 r40e29f5 115 115 * @param[out] answer The message answer structure. 116 116 */ 117 #define SOCKET_SET_SOCKET_ID(answer) &IPC_GET_ARG1(answer) 117 #define SOCKET_SET_SOCKET_ID(answer, value) \ 118 {ipcarg_t argument = (ipcarg_t) (value); IPC_SET_ARG1(answer, argument);} 118 119 119 120 /** Returns the socket identifier message parameter. 120 121 * @param[in] call The message call structure. 121 122 */ 122 #define SOCKET_GET_SOCKET_ID(call) (int) IPC_GET_ARG1(call) 123 #define SOCKET_GET_SOCKET_ID(call) \ 124 ({int socket_id = (int) IPC_GET_ARG1(call); socket_id;}) 123 125 124 126 /** Sets the read data length in the message answer. 125 127 * @param[out] answer The message answer structure. 126 128 */ 127 #define SOCKET_SET_READ_DATA_LENGTH(answer) &IPC_GET_ARG1(answer) 129 #define SOCKET_SET_READ_DATA_LENGTH(answer, value) \ 130 {ipcarg_t argument = (ipcarg_t) (value); IPC_SET_ARG1(answer, argument);} 128 131 129 132 /** Returns the read data length message parameter. 130 133 * @param[in] call The message call structure. 131 134 */ 132 #define SOCKET_GET_READ_DATA_LENGTH(call) (int) IPC_GET_ARG1(call) 135 #define SOCKET_GET_READ_DATA_LENGTH(call) \ 136 ({int data_length = (int) IPC_GET_ARG1(call); data_length;}) 133 137 134 138 /** Returns the backlog message parameter. 135 139 * @param[in] call The message call structure. 136 140 */ 137 #define SOCKET_GET_BACKLOG(call) (int) IPC_GET_ARG2(call) 141 #define SOCKET_GET_BACKLOG(call) \ 142 ({int backlog = (int) IPC_GET_ARG2(call); backlog;}) 138 143 139 144 /** Returns the option level message parameter. 140 145 * @param[in] call The message call structure. 141 146 */ 142 #define SOCKET_GET_OPT_LEVEL(call) (int) IPC_GET_ARG2(call) 147 #define SOCKET_GET_OPT_LEVEL(call) \ 148 ({int opt_level = (int) IPC_GET_ARG2(call); opt_level;}) 143 149 144 150 /** Returns the data fragment size message parameter. 145 151 * @param[in] call The message call structure. 146 152 */ 147 #define SOCKET_GET_DATA_FRAGMENT_SIZE(call) (size_t) IPC_GET_ARG2(call) 153 #define SOCKET_GET_DATA_FRAGMENT_SIZE(call) \ 154 ({size_t size = (size_t) IPC_GET_ARG2(call); size;}) 148 155 149 156 /** Sets the data fragment size in the message answer. 150 157 * @param[out] answer The message answer structure. 151 158 */ 152 #define SOCKET_SET_DATA_FRAGMENT_SIZE(answer) &IPC_GET_ARG2(answer) 159 #define SOCKET_SET_DATA_FRAGMENT_SIZE(answer, value) \ 160 {ipcarg_t argument = (ipcarg_t) (value); IPC_SET_ARG2(answer, argument);} 153 161 154 162 /** Sets the address length in the message answer. 155 163 * @param[out] answer The message answer structure. 156 164 */ 157 #define SOCKET_SET_ADDRESS_LENGTH(answer) &IPC_GET_ARG3(answer) 165 #define SOCKET_SET_ADDRESS_LENGTH(answer, value) \ 166 {ipcarg_t argument = (ipcarg_t) (value); IPC_SET_ARG3(answer, argument);} 158 167 159 168 /** Returns the address length message parameter. 160 169 * @param[in] call The message call structure. 161 170 */ 162 #define SOCKET_GET_ADDRESS_LENGTH(call) (socklen_t) IPC_GET_ARG3(call) 171 #define SOCKET_GET_ADDRESS_LENGTH(call) \ 172 ({socklen_t address_length = (socklen_t) IPC_GET_ARG3(call); address_length;}) 163 173 164 174 /** Sets the header size in the message answer. 165 175 * @param[out] answer The message answer structure. 166 176 */ 167 #define SOCKET_SET_HEADER_SIZE(answer) &IPC_GET_ARG3(answer) 177 #define SOCKET_SET_HEADER_SIZE(answer, value) \ 178 \ 179 {ipcarg_t argument = (ipcarg_t) (value); IPC_SET_ARG3(answer, argument);} 168 180 169 181 /** Returns the header size message parameter. 170 182 * @param[in] call The message call structure. 171 183 */ 172 #define SOCKET_GET_HEADER_SIZE(call) (size_t) IPC_GET_ARG3(call) 184 #define SOCKET_GET_HEADER_SIZE(call) \ 185 ({size_t size = (size_t) IPC_GET_ARG3(call); size;}) 173 186 174 187 /** Returns the flags message parameter. 175 188 * @param[in] call The message call structure. 176 189 */ 177 #define SOCKET_GET_FLAGS(call) (int) IPC_GET_ARG4(call) 190 #define SOCKET_GET_FLAGS(call) \ 191 ({int flags = (int) IPC_GET_ARG4(call); flags;}) 178 192 179 193 /** Returns the option name message parameter. 180 194 * @param[in] call The message call structure. 181 195 */ 182 #define SOCKET_GET_OPT_NAME(call) (int) IPC_GET_ARG4(call) 196 #define SOCKET_GET_OPT_NAME(call) \ 197 ({int opt_name = (int) IPC_GET_ARG4(call); opt_name;}) 183 198 184 199 /** Returns the data fragments message parameter. 185 200 * @param[in] call The message call structure. 186 201 */ 187 #define SOCKET_GET_DATA_FRAGMENTS(call) (int) IPC_GET_ARG5(call) 202 #define SOCKET_GET_DATA_FRAGMENTS(call) \ 203 ({int fragments = (int) IPC_GET_ARG5(call); fragments;}) 188 204 189 205 /** Returns the new socket identifier message parameter. 190 206 * @param[in] call The message call structure. 191 207 */ 192 #define SOCKET_GET_NEW_SOCKET_ID(call) (int) IPC_GET_ARG5(call) 208 #define SOCKET_GET_NEW_SOCKET_ID(call) \ 209 ({int socket_id = (int) IPC_GET_ARG5(call); socket_id;}) 193 210 194 211 /*@}*/ -
uspace/srv/net/structures/packet/packet_server.c
r63f8966 r40e29f5 194 194 } 195 195 *answer_count = 2; 196 IPC_SET_ARG1(*answer, packet->packet_id);197 IPC_SET_ARG2(*answer, packet->length);196 IPC_SET_ARG1(*answer, (ipcarg_t) packet->packet_id); 197 IPC_SET_ARG2(*answer, (ipcarg_t) packet->length); 198 198 return EOK; 199 199 case NET_PACKET_CREATE_4: … … 203 203 } 204 204 *answer_count = 2; 205 IPC_SET_ARG1(*answer, packet->packet_id);206 IPC_SET_ARG2(*answer, packet->length);205 IPC_SET_ARG1(*answer, (ipcarg_t) packet->packet_id); 206 IPC_SET_ARG2(*answer, (ipcarg_t) packet->length); 207 207 return EOK; 208 208 case NET_PACKET_GET: … … 217 217 return ENOENT; 218 218 } 219 IPC_SET_ARG1(*answer, packet->length);219 IPC_SET_ARG1(*answer, (ipcarg_t) packet->length); 220 220 *answer_count = 1; 221 221 return EOK; -
uspace/srv/net/tl/icmp/icmp_messages.h
r63f8966 r40e29f5 82 82 * @param[in] call The message call structure. 83 83 */ 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;}) 85 86 86 87 /** Returns the ICMP link MTU message parameter. 87 88 * @param[in] call The message call structure. 88 89 */ 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;}) 90 92 91 93 /** Returns the pointer message parameter. 92 94 * @param[in] call The message call structure. 93 95 */ 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;}) 95 98 96 99 /** Returns the size message parameter. 97 100 * @param[in] call The message call structure. 98 101 */ 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;}) 100 104 101 105 /** Returns the timeout message parameter. 102 106 * @param[in] call The message call structure. 103 107 */ 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;})) 105 110 106 111 /** Returns the time to live message parameter. 107 112 * @param[in] call The message call structure. 108 113 */ 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;}) 110 116 111 117 /** Returns the type of service message parameter. 112 118 * @param[in] call The message call structure. 113 119 */ 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;}) 115 122 116 123 /** Returns the dont fragment message parameter. 117 124 * @param[in] call The message call structure. 118 125 */ 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;}) 120 128 121 129 /*@}*/ -
uspace/srv/net/tl/tcp/tcp.c
r63f8966 r40e29f5 1062 1062 int socket_id; 1063 1063 size_t addrlen; 1064 size_t size; 1064 1065 fibril_rwlock_t lock; 1065 1066 ipc_call_t answer; … … 1107 1108 socket_id = SOCKET_GET_SOCKET_ID(call); 1108 1109 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); 1110 1111 fibril_rwlock_write_unlock(&lock); 1111 1112 if(res == EOK){ 1112 1113 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)); 1114 1115 } 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); 1117 1118 answer_count = 3; 1118 1119 }else{ … … 1166 1167 fibril_rwlock_read_lock(&tcp_globals.lock); 1167 1168 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); 1169 1171 fibril_rwlock_write_unlock(&lock); 1170 1172 fibril_rwlock_read_unlock(&tcp_globals.lock); 1171 1173 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); 1174 1176 answer_count = 3; 1175 1177 } … … 1178 1180 fibril_rwlock_read_lock(&tcp_globals.lock); 1179 1181 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); 1181 1184 if(res != EOK){ 1182 1185 fibril_rwlock_write_unlock(&lock); … … 1191 1194 fibril_rwlock_read_lock(&tcp_globals.lock); 1192 1195 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); 1194 1198 if(res != EOK){ 1195 1199 fibril_rwlock_write_unlock(&lock); … … 1208 1212 fibril_rwlock_read_unlock(&tcp_globals.lock); 1209 1213 if(res > 0){ 1210 *SOCKET_SET_READ_DATA_LENGTH(answer) = res;1214 SOCKET_SET_READ_DATA_LENGTH(answer, res); 1211 1215 answer_count = 1; 1212 1216 res = EOK; … … 1220 1224 fibril_rwlock_read_unlock(&tcp_globals.lock); 1221 1225 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); 1224 1228 answer_count = 3; 1225 1229 res = EOK; -
uspace/srv/net/tl/udp/udp.c
r63f8966 r40e29f5 419 419 int socket_id; 420 420 size_t addrlen; 421 size_t size; 421 422 ipc_call_t answer; 422 423 int answer_count; … … 454 455 socket_id = SOCKET_GET_SOCKET_ID(call); 455 456 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 458 459 if(res == EOK){ 459 460 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); 461 462 } 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); 464 465 answer_count = 3; 465 466 } … … 478 479 if(res == EOK){ 479 480 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); 481 483 if(res != EOK){ 482 484 fibril_rwlock_write_unlock(&udp_globals.lock); … … 492 494 fibril_rwlock_write_unlock(&udp_globals.lock); 493 495 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); 496 498 answer_count = 3; 497 499 res = EOK;
Note:
See TracChangeset
for help on using the changeset viewer.