Changeset fdbc3ff in mainline for uspace/srv/net/il/ip/ip.c
- Timestamp:
- 2010-11-19T23:50:06Z (14 years ago)
- 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. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/il/ip/ip.c
rb4c9c61 rfdbc3ff 139 139 * Searches the registered protocols. 140 140 * 141 * @return sThe found ICMP phone.142 * @return sENOENT if the ICMP is not registered.141 * @return The found ICMP phone. 142 * @return ENOENT if the ICMP is not registered. 143 143 */ 144 144 static int ip_get_icmp_phone(void) 145 145 { 146 ip_proto_ refproto;146 ip_proto_t *proto; 147 147 int phone; 148 148 … … 160 160 * @param[in] packet The packet or the packet queue to be reported as faulty. 161 161 * @param[in] header The first packet IP header. May be NULL. 162 * @return sEOK on success.163 * @return sEINVAL if there are no data in the packet.164 * @return sEINVAL if the packet is a fragment.165 * @return sENOMEM if the packet is too short to contain the IP162 * @return EOK on success. 163 * @return EINVAL if there are no data in the packet. 164 * @return EINVAL if the packet is a fragment. 165 * @return ENOMEM if the packet is too short to contain the IP 166 166 * header. 167 * @return sEAFNOSUPPORT if the address family is not supported.168 * @return sEPERM if the protocol is not allowed to send ICMP167 * @return EAFNOSUPPORT if the address family is not supported. 168 * @return EPERM if the protocol is not allowed to send ICMP 169 169 * notifications. The ICMP protocol itself. 170 * @return sOther error codes as defined for the packet_set_addr().171 */ 172 static int ip_prepare_icmp(packet_t packet, ip_header_ refheader)170 * @return Other error codes as defined for the packet_set_addr(). 171 */ 172 static int ip_prepare_icmp(packet_t packet, ip_header_t *header) 173 173 { 174 174 packet_t next; … … 187 187 188 188 // get header 189 header = (ip_header_ ref) packet_get_data(packet);189 header = (ip_header_t *) packet_get_data(packet); 190 190 if (!header) 191 191 return EINVAL; … … 227 227 * @param[in] packet The packet or the packet queue to be reported as faulty. 228 228 * @param[in] header The first packet IP header. May be NULL. 229 * @return sThe found ICMP phone.230 * @return sEINVAL if the error parameter is set.231 * @return sEINVAL if the ICMP phone is not found.232 * @return sEINVAL if the ip_prepare_icmp() fails.229 * @return The found ICMP phone. 230 * @return EINVAL if the error parameter is set. 231 * @return EINVAL if the ICMP phone is not found. 232 * @return EINVAL if the ip_prepare_icmp() fails. 233 233 */ 234 234 static int 235 235 ip_prepare_icmp_and_get_phone(services_t error, packet_t packet, 236 ip_header_ refheader)236 ip_header_t *header) 237 237 { 238 238 int phone; … … 248 248 * @param[in] client_connection The client connection processing function. The 249 249 * module skeleton propagates its own one. 250 * @return sEOK on success.251 * @return sENOMEM if there is not enough memory left.250 * @return EOK on success. 251 * @return ENOMEM if there is not enough memory left. 252 252 */ 253 253 int ip_initialize(async_client_conn_t client_connection) … … 293 293 * 294 294 * @param[in,out] ip_netif Network interface specific data. 295 * @return sEOK on success.296 * @return sENOTSUP if DHCP is configured.297 * @return sENOTSUP if IPv6 is configured.298 * @return sEINVAL if any of the addresses is invalid.299 * @return sEINVAL if the used ARP module is not known.300 * @return sENOMEM if there is not enough memory left.301 * @return sOther error codes as defined for the295 * @return EOK on success. 296 * @return ENOTSUP if DHCP is configured. 297 * @return ENOTSUP if IPv6 is configured. 298 * @return EINVAL if any of the addresses is invalid. 299 * @return EINVAL if the used ARP module is not known. 300 * @return ENOMEM if there is not enough memory left. 301 * @return Other error codes as defined for the 302 302 * net_get_device_conf_req() function. 303 * @return sOther error codes as defined for the bind_service()303 * @return Other error codes as defined for the bind_service() 304 304 * function. 305 * @return sOther error codes as defined for the specific305 * @return Other error codes as defined for the specific 306 306 * arp_device_req() function. 307 * @return sOther error codes as defined for the307 * @return Other error codes as defined for the 308 308 * nil_packet_size_req() function. 309 309 */ 310 static int ip_netif_initialize(ip_netif_ refip_netif)310 static int ip_netif_initialize(ip_netif_t *ip_netif) 311 311 { 312 312 measured_string_t names[] = { … … 344 344 } 345 345 }; 346 measured_string_ refconfiguration;346 measured_string_t *configuration; 347 347 size_t count = sizeof(names) / sizeof(measured_string_t); 348 348 char *data; 349 349 measured_string_t address; 350 ip_route_ refroute;350 ip_route_t *route; 351 351 in_addr_t gateway; 352 352 int index; … … 378 378 return ENOTSUP; 379 379 } else if (ip_netif->ipv == IPV4) { 380 route = (ip_route_ ref) malloc(sizeof(ip_route_t));380 route = (ip_route_t *) malloc(sizeof(ip_route_t)); 381 381 if (!route) { 382 382 net_free_settings(configuration, data); … … 486 486 * @param[in] device_id The device identifier. 487 487 * @param[in] mtu The new mtu value. 488 * @return sEOK on success.489 * @return sENOENT if device is not found.488 * @return EOK on success. 489 * @return ENOENT if device is not found. 490 490 */ 491 491 static int ip_mtu_changed_message(device_id_t device_id, size_t mtu) 492 492 { 493 ip_netif_ refnetif;493 ip_netif_t *netif; 494 494 495 495 fibril_rwlock_write_lock(&ip_globals.netifs_lock); … … 511 511 * @param[in] device_id The device identifier. 512 512 * @param[in] state The new state value. 513 * @return sEOK on success.514 * @return sENOENT if device is not found.513 * @return EOK on success. 514 * @return ENOENT if device is not found. 515 515 */ 516 516 static int ip_device_state_message(device_id_t device_id, device_state_t state) 517 517 { 518 ip_netif_ refnetif;518 ip_netif_t *netif; 519 519 520 520 fibril_rwlock_write_lock(&ip_globals.netifs_lock); … … 539 539 * @param[in] packet The packet to be prefixed. 540 540 * @param[in] last The last header to be copied. 541 * @return sThe prefixed middle header.542 * @return sNULL on error.543 */ 544 static ip_header_ ref545 ip_create_middle_header(packet_t packet, ip_header_ reflast)546 { 547 ip_header_ refmiddle;548 549 middle = (ip_header_ ref) packet_suffix(packet, IP_HEADER_LENGTH(last));541 * @return The prefixed middle header. 542 * @return NULL on error. 543 */ 544 static ip_header_t * 545 ip_create_middle_header(packet_t packet, ip_header_t *last) 546 { 547 ip_header_t *middle; 548 549 middle = (ip_header_t *) packet_suffix(packet, IP_HEADER_LENGTH(last)); 550 550 if (!middle) 551 551 return NULL; … … 562 562 * @param[in] first The original header to be copied. 563 563 */ 564 static void ip_create_last_header(ip_header_ ref last, ip_header_reffirst)565 { 566 ip_option_ refoption;564 static void ip_create_last_header(ip_header_t *last, ip_header_t *first) 565 { 566 ip_option_t *option; 567 567 size_t next; 568 568 size_t length; … … 575 575 // process all ip options 576 576 while (next < first->header_length) { 577 option = (ip_option_ ref) (((uint8_t *) first) + next);577 option = (ip_option_t *) (((uint8_t *) first) + next); 578 578 // skip end or noop 579 579 if ((option->type == IPOPT_END) || … … 613 613 * @param[in,out] packet The packet to be sent. 614 614 * @param[in] destination The destination hardware address. 615 * @return sEOK on success.616 * @return sEINVAL if the packet is too small to contain the IP615 * @return EOK on success. 616 * @return EINVAL if the packet is too small to contain the IP 617 617 * header. 618 * @return sEINVAL if the packet is too long than the IP allows.619 * @return sENOMEM if there is not enough memory left.620 * @return sOther error codes as defined for the packet_set_addr()618 * @return EINVAL if the packet is too long than the IP allows. 619 * @return ENOMEM if there is not enough memory left. 620 * @return Other error codes as defined for the packet_set_addr() 621 621 * function. 622 622 */ 623 623 static int 624 624 ip_prepare_packet(in_addr_t *source, in_addr_t dest, packet_t packet, 625 measured_string_ refdestination)625 measured_string_t *destination) 626 626 { 627 627 size_t length; 628 ip_header_ refheader;629 ip_header_ reflast_header;630 ip_header_ refmiddle_header;628 ip_header_t *header; 629 ip_header_t *last_header; 630 ip_header_t *middle_header; 631 631 packet_t next; 632 632 int rc; … … 636 636 return EINVAL; 637 637 638 header = (ip_header_ ref) packet_get_data(packet);638 header = (ip_header_t *) packet_get_data(packet); 639 639 if (destination) { 640 640 rc = packet_set_addr(packet, NULL, (uint8_t *) destination->value, … … 660 660 661 661 if (pq_next(packet)) { 662 last_header = (ip_header_ ref) malloc(IP_HEADER_LENGTH(header));662 last_header = (ip_header_t *) malloc(IP_HEADER_LENGTH(header)); 663 663 if (!last_header) 664 664 return ENOMEM; … … 666 666 next = pq_next(packet); 667 667 while (pq_next(next)) { 668 middle_header = (ip_header_ ref) packet_prefix(next,668 middle_header = (ip_header_t *) packet_prefix(next, 669 669 IP_HEADER_LENGTH(last_header)); 670 670 if (!middle_header) { … … 698 698 } 699 699 700 middle_header = (ip_header_ ref) packet_prefix(next,700 middle_header = (ip_header_t *) packet_prefix(next, 701 701 IP_HEADER_LENGTH(last_header)); 702 702 if (!middle_header) { … … 746 746 * @param[in] dest The destiantion address. 747 747 * @param[in] addrlen The address length. 748 * @return sEOK on success.749 * @return sENOMEM if the target packet is too small.750 * @return sOther error codes as defined for the packet_set_addr()748 * @return EOK on success. 749 * @return ENOMEM if the target packet is too small. 750 * @return Other error codes as defined for the packet_set_addr() 751 751 * function. 752 * @return sOther error codes as defined for the pq_insert_after()752 * @return Other error codes as defined for the pq_insert_after() 753 753 * function. 754 754 */ 755 755 static int 756 756 ip_fragment_packet_data(packet_t packet, packet_t new_packet, 757 ip_header_ ref header, ip_header_refnew_header, size_t length,757 ip_header_t *header, ip_header_t *new_header, size_t length, 758 758 const struct sockaddr *src, const struct sockaddr *dest, socklen_t addrlen) 759 759 { … … 799 799 * @param[in] suffix The minimum suffix size. 800 800 * @param[in] addr_len The minimum address length. 801 * @return sEOK on success.802 * @return sEINVAL if the packet_get_addr() function fails.803 * @return sEINVAL if the packet does not contain the IP header.804 * @return sEPERM if the packet needs to be fragmented and the801 * @return EOK on success. 802 * @return EINVAL if the packet_get_addr() function fails. 803 * @return EINVAL if the packet does not contain the IP header. 804 * @return EPERM if the packet needs to be fragmented and the 805 805 * fragmentation is not allowed. 806 * @return sENOMEM if there is not enough memory left.807 * @return sENOMEM if there is no packet available.808 * @return sENOMEM if the packet is too small to contain the IP806 * @return ENOMEM if there is not enough memory left. 807 * @return ENOMEM if there is no packet available. 808 * @return ENOMEM if the packet is too small to contain the IP 809 809 * header. 810 * @return sOther error codes as defined for the packet_trim()810 * @return Other error codes as defined for the packet_trim() 811 811 * function. 812 * @return sOther error codes as defined for the812 * @return Other error codes as defined for the 813 813 * ip_create_middle_header() function. 814 * @return sOther error codes as defined for the814 * @return Other error codes as defined for the 815 815 * ip_fragment_packet_data() function. 816 816 */ … … 820 820 { 821 821 packet_t new_packet; 822 ip_header_ refheader;823 ip_header_ refmiddle_header;824 ip_header_ reflast_header;822 ip_header_t *header; 823 ip_header_t *middle_header; 824 ip_header_t *last_header; 825 825 struct sockaddr *src; 826 826 struct sockaddr *dest; … … 838 838 839 839 // get header 840 header = (ip_header_ ref) packet_get_data(packet);840 header = (ip_header_t *) packet_get_data(packet); 841 841 if (!header) 842 842 return EINVAL; … … 853 853 854 854 // allocate as much as originally 855 last_header = (ip_header_ ref) packet_suffix(new_packet,855 last_header = (ip_header_t *) packet_suffix(new_packet, 856 856 IP_HEADER_LENGTH(header)); 857 857 if (!last_header) … … 919 919 * @param[in] addr_len The minimum address length. 920 920 * @param[in] error The error module service. 921 * @return sThe packet or the packet queue of the allowed length.922 * @return sNULL if there are no packets left.921 * @return The packet or the packet queue of the allowed length. 922 * @return NULL if there are no packets left. 923 923 */ 924 924 static packet_t … … 986 986 * @param[in] dest The destination address. 987 987 * @param[in] error The error module service. 988 * @return sEOK on success.989 * @return sOther error codes as defined for the arp_translate_req()988 * @return EOK on success. 989 * @return Other error codes as defined for the arp_translate_req() 990 990 * function. 991 * @return sOther error codes as defined for the ip_prepare_packet()991 * @return Other error codes as defined for the ip_prepare_packet() 992 992 * function. 993 993 */ 994 994 static int 995 ip_send_route(packet_t packet, ip_netif_ ref netif, ip_route_refroute,995 ip_send_route(packet_t packet, ip_netif_t *netif, ip_route_t *route, 996 996 in_addr_t *src, in_addr_t dest, services_t error) 997 997 { 998 998 measured_string_t destination; 999 measured_string_ reftranslation;999 measured_string_t *translation; 1000 1000 char *data; 1001 1001 int phone; … … 1062 1062 * NULL. 1063 1063 * @param[in] destination The destination address. 1064 * @return sThe found route.1065 * @return sNULL if no route was found.1066 */ 1067 static ip_route_ ref1068 ip_netif_find_route(ip_netif_ refnetif, in_addr_t destination)1064 * @return The found route. 1065 * @return NULL if no route was found. 1066 */ 1067 static ip_route_t * 1068 ip_netif_find_route(ip_netif_t *netif, in_addr_t destination) 1069 1069 { 1070 1070 int index; 1071 ip_route_ refroute;1071 ip_route_t *route; 1072 1072 1073 1073 if (!netif) … … 1090 1090 * 1091 1091 * @param[in] destination The destination address. 1092 * @return sThe found route.1093 * @return sNULL if no route was found.1094 */ 1095 static ip_route_ refip_find_route(in_addr_t destination) {1092 * @return The found route. 1093 * @return NULL if no route was found. 1094 */ 1095 static ip_route_t *ip_find_route(in_addr_t destination) { 1096 1096 int index; 1097 ip_route_ refroute;1098 ip_netif_ refnetif;1097 ip_route_t *route; 1098 ip_netif_t *netif; 1099 1099 1100 1100 // start with the last netif - the newest one … … 1116 1116 * 1117 1117 * @param[in] netif The network interface. 1118 * @return sThe IP address.1119 * @return sNULL if no IP address was found.1120 */ 1121 static in_addr_t *ip_netif_address(ip_netif_ refnetif)1122 { 1123 ip_route_ refroute;1118 * @return The IP address. 1119 * @return NULL if no IP address was found. 1120 */ 1121 static in_addr_t *ip_netif_address(ip_netif_t *netif) 1122 { 1123 ip_route_t *route; 1124 1124 1125 1125 route = ip_routes_get_index(&netif->routes, 0); … … 1136 1136 * @param[in] phone The transport layer module phone. 1137 1137 * @param[in] received_msg The receiving function. 1138 * @return sEOK on success.1139 * @return sEINVAL if the protocol parameter and/or the service1138 * @return EOK on success. 1139 * @return EINVAL if the protocol parameter and/or the service 1140 1140 * parameter is zero. 1141 * @return sEINVAL if the phone parameter is not a positive number1141 * @return EINVAL if the phone parameter is not a positive number 1142 1142 * and the tl_receive_msg is NULL. 1143 * @return sENOMEM if there is not enough memory left.1143 * @return ENOMEM if there is not enough memory left. 1144 1144 */ 1145 1145 static int … … 1147 1147 tl_received_msg_t received_msg) 1148 1148 { 1149 ip_proto_ refproto;1149 ip_proto_t *proto; 1150 1150 int index; 1151 1151 … … 1153 1153 return EINVAL; 1154 1154 1155 proto = (ip_proto_ ref) malloc(sizeof(ip_protos_t));1155 proto = (ip_proto_t *) malloc(sizeof(ip_protos_t)); 1156 1156 if (!proto) 1157 1157 return ENOMEM; … … 1180 1180 ip_device_req_local(int il_phone, device_id_t device_id, services_t netif) 1181 1181 { 1182 ip_netif_ refip_netif;1183 ip_route_ refroute;1182 ip_netif_t *ip_netif; 1183 ip_route_t *route; 1184 1184 int index; 1185 1185 int rc; 1186 1186 1187 ip_netif = (ip_netif_ ref) malloc(sizeof(ip_netif_t));1187 ip_netif = (ip_netif_t *) malloc(sizeof(ip_netif_t)); 1188 1188 if (!ip_netif) 1189 1189 return ENOMEM; … … 1251 1251 { 1252 1252 int addrlen; 1253 ip_netif_ refnetif;1254 ip_route_ refroute;1253 ip_netif_t *netif; 1254 ip_route_t *route; 1255 1255 struct sockaddr *addr; 1256 1256 struct sockaddr_in *address_in; … … 1361 1361 * @param[out] content The maximum content size. 1362 1362 * @param[out] suffix The minimum reserved suffix size. 1363 * @return sEOK on success.1363 * @return EOK on success. 1364 1364 */ 1365 1365 static int … … 1367 1367 size_t *content, size_t *suffix) 1368 1368 { 1369 ip_netif_ refnetif;1369 ip_netif_t *netif; 1370 1370 int index; 1371 1371 … … 1418 1418 * 1419 1419 * @param[in] header The packet IP header to be read. 1420 * @return sThe packet destination address.1421 */ 1422 static in_addr_t ip_get_destination(ip_header_ refheader)1420 * @return The packet destination address. 1421 */ 1422 static in_addr_t ip_get_destination(ip_header_t *header) 1423 1423 { 1424 1424 in_addr_t destination; … … 1439 1439 * @param[in] header The first packet IP header. May be NULL. 1440 1440 * @param[in] error The packet error service. 1441 * @return sEOK on success.1442 * @return sENOTSUP if the packet is a fragment.1443 * @return sEAFNOSUPPORT if the address family is not supported.1444 * @return sENOENT if the target protocol is not found.1445 * @return sOther error codes as defined for the packet_set_addr()1441 * @return EOK on success. 1442 * @return ENOTSUP if the packet is a fragment. 1443 * @return EAFNOSUPPORT if the address family is not supported. 1444 * @return ENOENT if the target protocol is not found. 1445 * @return Other error codes as defined for the packet_set_addr() 1446 1446 * function. 1447 * @return sOther error codes as defined for the packet_trim()1447 * @return Other error codes as defined for the packet_trim() 1448 1448 * function. 1449 * @return sOther error codes as defined for the protocol specific1449 * @return Other error codes as defined for the protocol specific 1450 1450 * tl_received_msg() function. 1451 1451 */ 1452 1452 static int 1453 ip_deliver_local(device_id_t device_id, packet_t packet, ip_header_ refheader,1453 ip_deliver_local(device_id_t device_id, packet_t packet, ip_header_t *header, 1454 1454 services_t error) 1455 1455 { 1456 ip_proto_ refproto;1456 ip_proto_t *proto; 1457 1457 int phone; 1458 1458 services_t service; … … 1544 1544 * @param[in] device_id The source device identifier. 1545 1545 * @param[in] packet The received packet to be processed. 1546 * @return sEOK on success.1547 * @return sEINVAL if the TTL is less than two.1548 * @return sEINVAL if the checksum is invalid.1549 * @return sEAFNOSUPPORT if the address family is not supported.1550 * @return sENOENT if no route was found.1551 * @return sENOENT if the packet is for another host and the routing1546 * @return EOK on success. 1547 * @return EINVAL if the TTL is less than two. 1548 * @return EINVAL if the checksum is invalid. 1549 * @return EAFNOSUPPORT if the address family is not supported. 1550 * @return ENOENT if no route was found. 1551 * @return ENOENT if the packet is for another host and the routing 1552 1552 * is disabled. 1553 1553 */ … … 1555 1555 ip_process_packet(device_id_t device_id, packet_t packet) 1556 1556 { 1557 ip_header_ refheader;1557 ip_header_t *header; 1558 1558 in_addr_t dest; 1559 ip_route_ refroute;1559 ip_route_t *route; 1560 1560 int phone; 1561 1561 struct sockaddr *addr; … … 1564 1564 int rc; 1565 1565 1566 header = (ip_header_ ref) packet_get_data(packet);1566 header = (ip_header_t *) packet_get_data(packet); 1567 1567 if (!header) 1568 1568 return ip_release_and_return(packet, ENOMEM); … … 1647 1647 in_addr_t netmask, in_addr_t gateway) 1648 1648 { 1649 ip_route_ refroute;1650 ip_netif_ refnetif;1649 ip_route_t *route; 1650 ip_netif_t *netif; 1651 1651 int index; 1652 1652 … … 1659 1659 } 1660 1660 1661 route = (ip_route_ ref) malloc(sizeof(ip_route_t));1661 route = (ip_route_t *) malloc(sizeof(ip_route_t)); 1662 1662 if (!route) { 1663 1663 fibril_rwlock_write_unlock(&ip_globals.netifs_lock); … … 1681 1681 ip_set_gateway_req_local(int ip_phone, device_id_t device_id, in_addr_t gateway) 1682 1682 { 1683 ip_netif_ refnetif;1683 ip_netif_t *netif; 1684 1684 1685 1685 fibril_rwlock_write_lock(&ip_globals.netifs_lock); … … 1721 1721 icmp_type_t type; 1722 1722 icmp_code_t code; 1723 ip_netif_ refnetif;1723 ip_netif_t *netif; 1724 1724 measured_string_t address; 1725 ip_route_ refroute;1726 ip_header_ refheader;1725 ip_route_t *route; 1726 ip_header_t *header; 1727 1727 1728 1728 switch (error) { … … 1734 1734 1735 1735 data = packet_get_data(packet); 1736 header = (ip_header_ ref)(data + offset);1736 header = (ip_header_t *)(data + offset); 1737 1737 1738 1738 // destination host unreachable? … … 1782 1782 in_addr_t *dest; 1783 1783 in_addr_t *src; 1784 ip_route_ refroute;1785 ipv4_pseudo_header_ refheader_in;1784 ip_route_t *route; 1785 ipv4_pseudo_header_t *header_in; 1786 1786 1787 1787 if (!destination || (addrlen <= 0)) … … 1829 1829 1830 1830 *headerlen = sizeof(*header_in); 1831 header_in = (ipv4_pseudo_header_ ref) malloc(*headerlen);1831 header_in = (ipv4_pseudo_header_t *) malloc(*headerlen); 1832 1832 if (!header_in) 1833 1833 return ENOMEM; … … 1849 1849 * @param[in] device_id The source device identifier. 1850 1850 * @param[in,out] packet The received packet. 1851 * @return sEOK on success and the packet is no longer needed.1852 * @return sEINVAL if the packet is too small to carry the IP1851 * @return EOK on success and the packet is no longer needed. 1852 * @return EINVAL if the packet is too small to carry the IP 1853 1853 * packet. 1854 * @return sEINVAL if the received address lengths differs from the1854 * @return EINVAL if the received address lengths differs from the 1855 1855 * registered values. 1856 * @return sENOENT if the device is not found in the cache.1857 * @return sENOENT if the protocol for the device is not found in1856 * @return ENOENT if the device is not found in the cache. 1857 * @return ENOENT if the protocol for the device is not found in 1858 1858 * the cache. 1859 * @return sENOMEM if there is not enough memory left.1859 * @return ENOMEM if there is not enough memory left. 1860 1860 */ 1861 1861 static int ip_receive_message(device_id_t device_id, packet_t packet) … … 1879 1879 * @param[out] answer_count The last parameter for the actual answer in the 1880 1880 * answer parameter. 1881 * @return sEOK on success.1882 * @return sENOTSUP if the message is not known.1881 * @return EOK on success. 1882 * @return ENOTSUP if the message is not known. 1883 1883 * 1884 1884 * @see ip_interface.h … … 2037 2037 /** Starts the module. 2038 2038 * 2039 * @return sEOK on success.2040 * @return sOther error codes as defined for each specific module start function.2039 * @return EOK on success. 2040 * @return Other error codes as defined for each specific module start function. 2041 2041 */ 2042 2042 int main(int argc, char *argv[])
Note:
See TracChangeset
for help on using the changeset viewer.