Changes in uspace/app/netecho/netecho.c [5d0f1bc:a8e5051] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/netecho/netecho.c
r5d0f1bc ra8e5051 41 41 #include <task.h> 42 42 #include <arg_parse.h> 43 #include <err.h> 43 44 44 45 #include <net/in.h> … … 90 91 int main(int argc, char *argv[]) 91 92 { 93 ERROR_DECLARE; 94 92 95 size_t size = 1024; 93 96 int verbose = 0; … … 114 117 size_t reply_length; 115 118 int value; 116 int rc;117 119 118 120 // parse the command line arguments … … 121 123 switch (argv[index][1]) { 122 124 case 'b': 123 rc = arg_parse_int(argc, argv, &index, &backlog, 0); 124 if (rc != EOK) 125 return rc; 125 ERROR_PROPAGATE(arg_parse_int(argc, argv, &index, &backlog, 0)); 126 126 break; 127 127 case 'c': 128 rc = arg_parse_int(argc, argv, &index, &count, 0); 129 if (rc != EOK) 130 return rc; 128 ERROR_PROPAGATE(arg_parse_int(argc, argv, &index, &count, 0)); 131 129 break; 132 130 case 'f': 133 rc = arg_parse_name_int(argc, argv, &index, &family, 0, socket_parse_protocol_family); 134 if (rc != EOK) 135 return rc; 131 ERROR_PROPAGATE(arg_parse_name_int(argc, argv, &index, &family, 0, socket_parse_protocol_family)); 136 132 break; 137 133 case 'h': … … 140 136 break; 141 137 case 'p': 142 rc = arg_parse_int(argc, argv, &index, &value, 0); 143 if (rc != EOK) 144 return rc; 138 ERROR_PROPAGATE(arg_parse_int(argc, argv, &index, &value, 0)); 145 139 port = (uint16_t) value; 146 140 break; 147 141 case 'r': 148 rc = arg_parse_string(argc, argv, &index, &reply, 0); 149 if (rc != EOK) 150 return rc; 142 ERROR_PROPAGATE(arg_parse_string(argc, argv, &index, &reply, 0)); 151 143 break; 152 144 case 's': 153 rc = arg_parse_int(argc, argv, &index, &value, 0); 154 if (rc != EOK) 155 return rc; 145 ERROR_PROPAGATE(arg_parse_int(argc, argv, &index, &value, 0)); 156 146 size = (value >= 0) ? (size_t) value : 0; 157 147 break; 158 148 case 't': 159 rc = arg_parse_name_int(argc, argv, &index, &value, 0, socket_parse_socket_type); 160 if (rc != EOK) 161 return rc; 149 ERROR_PROPAGATE(arg_parse_name_int(argc, argv, &index, &value, 0, socket_parse_socket_type)); 162 150 type = (sock_type_t) value; 163 151 break; … … 168 156 case '-': 169 157 if (str_lcmp(argv[index] + 2, "backlog=", 6) == 0) { 170 rc = arg_parse_int(argc, argv, &index, &backlog, 8); 171 if (rc != EOK) 172 return rc; 158 ERROR_PROPAGATE(arg_parse_int(argc, argv, &index, &backlog, 8)); 173 159 } else if (str_lcmp(argv[index] + 2, "count=", 6) == 0) { 174 rc = arg_parse_int(argc, argv, &index, &count, 8);160 ERROR_PROPAGATE(arg_parse_int(argc, argv, &index, &count, 8)); 175 161 } else if (str_lcmp(argv[index] + 2, "family=", 7) == 0) { 176 rc = arg_parse_name_int(argc, argv, &index, &family, 9, socket_parse_protocol_family); 177 if (rc != EOK) 178 return rc; 162 ERROR_PROPAGATE(arg_parse_name_int(argc, argv, &index, &family, 9, socket_parse_protocol_family)); 179 163 } else if (str_lcmp(argv[index] + 2, "help", 5) == 0) { 180 164 echo_print_help(); 181 165 return EOK; 182 166 } else if (str_lcmp(argv[index] + 2, "port=", 5) == 0) { 183 rc = arg_parse_int(argc, argv, &index, &value, 7); 184 if (rc != EOK) 185 return rc; 167 ERROR_PROPAGATE(arg_parse_int(argc, argv, &index, &value, 7)); 186 168 port = (uint16_t) value; 187 169 } else if (str_lcmp(argv[index] + 2, "reply=", 6) == 0) { 188 rc = arg_parse_string(argc, argv, &index, &reply, 8); 189 if (rc != EOK) 190 return rc; 170 ERROR_PROPAGATE(arg_parse_string(argc, argv, &index, &reply, 8)); 191 171 } else if (str_lcmp(argv[index] + 2, "size=", 5) == 0) { 192 rc = arg_parse_int(argc, argv, &index, &value, 7); 193 if (rc != EOK) 194 return rc; 172 ERROR_PROPAGATE(arg_parse_int(argc, argv, &index, &value, 7)); 195 173 size = (value >= 0) ? (size_t) value : 0; 196 174 } else if (str_lcmp(argv[index] + 2, "type=", 5) == 0) { 197 rc = arg_parse_name_int(argc, argv, &index, &value, 7, socket_parse_socket_type); 198 if (rc != EOK) 199 return rc; 175 ERROR_PROPAGATE(arg_parse_name_int(argc, argv, &index, &value, 7, socket_parse_socket_type)); 200 176 type = (sock_type_t) value; 201 177 } else if (str_lcmp(argv[index] + 2, "verbose", 8) == 0) { … … 264 240 } 265 241 // set the backlog 266 rc = listen(listening_id, backlog); 267 if (rc != EOK) { 268 socket_print_error(stderr, rc, "Socket listen: ", "\n"); 269 return rc; 242 if (ERROR_OCCURRED(listen(listening_id, backlog))) { 243 socket_print_error(stderr, ERROR_CODE, "Socket listen: ", "\n"); 244 return ERROR_CODE; 270 245 } 271 246 } 272 247 273 248 // bind the listenning socket 274 rc = bind(listening_id, address, addrlen); 275 if (rc != EOK) { 276 socket_print_error(stderr, rc, "Socket bind: ", "\n"); 277 return rc; 249 if (ERROR_OCCURRED(bind(listening_id, address, addrlen))) { 250 socket_print_error(stderr, ERROR_CODE, "Socket bind: ", "\n"); 251 return ERROR_CODE; 278 252 } 279 253 … … 327 301 // parse the source address 328 302 if (address_start) { 329 rc = inet_ntop(address->sa_family, address_start, address_string, sizeof(address_string)); 330 if (rc != EOK) { 331 fprintf(stderr, "Received address error %d\n", rc); 303 if (ERROR_OCCURRED(inet_ntop(address->sa_family, address_start, address_string, sizeof(address_string)))) { 304 fprintf(stderr, "Received address error %d\n", ERROR_CODE); 332 305 } else { 333 306 data[length] = '\0'; … … 338 311 339 312 // answer the request either with the static reply or the original data 340 rc = sendto(socket_id, reply ? reply : data, reply ? reply_length : length, 0, address, addrlen); 341 if (rc != EOK) 342 socket_print_error(stderr, rc, "Socket send: ", "\n"); 313 if (ERROR_OCCURRED(sendto(socket_id, reply ? reply : data, reply ? reply_length : length, 0, address, addrlen))) 314 socket_print_error(stderr, ERROR_CODE, "Socket send: ", "\n"); 343 315 } 344 316 345 317 // close the accepted stream socket 346 318 if (type == SOCK_STREAM) { 347 rc = closesocket(socket_id); 348 if (rc != EOK) 349 socket_print_error(stderr, rc, "Close socket: ", "\n"); 319 if (ERROR_OCCURRED(closesocket(socket_id))) 320 socket_print_error(stderr, ERROR_CODE, "Close socket: ", "\n"); 350 321 } 351 322 … … 364 335 365 336 // close the listenning socket 366 rc = closesocket(listening_id); 367 if (rc != EOK) { 368 socket_print_error(stderr, rc, "Close socket: ", "\n"); 369 return rc; 337 if (ERROR_OCCURRED(closesocket(listening_id))) { 338 socket_print_error(stderr, ERROR_CODE, "Close socket: ", "\n"); 339 return ERROR_CODE; 370 340 } 371 341
Note:
See TracChangeset
for help on using the changeset viewer.