Changeset 91478aa in mainline for uspace/srv/net/il/ip/ip.c
- Timestamp:
- 2010-02-17T23:20:41Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9b87284, ca2d142
- Parents:
- 536ded4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/il/ip/ip.c
r536ded4 r91478aa 152 152 int ip_device_state_message( device_id_t device_id, device_state_t state ); 153 153 154 /** Returns the device packet dimensions for sending. 155 * @param[in] phone The service module phone. 156 * @param[in] message The service specific message. 157 * @param[in] device_id The device identifier. 158 * @param[out] addr_len The minimum reserved address length. 159 * @param[out] prefix The minimum reserved prefix size. 160 * @param[out] content The maximum content size. 161 * @param[out] suffix The minimum reserved suffix size. 162 * @returns EOK on success. 163 */ 164 int ip_packet_size_message( device_id_t device_id, size_t * addr_len, size_t * prefix, size_t * content, size_t * suffix ); 165 154 166 /** Registers the transport layer protocol. 155 167 * The traffic of this protocol will be supplied using either the receive function or IPC message. … … 551 563 } 552 564 // get packet dimensions 553 ERROR_PROPAGATE( nil_packet_size_req( ip_netif->phone, ip_netif->device_id, & ip_netif-> addr_len, & ip_netif->prefix, & ip_netif->content, & ip_netif->suffix));554 if( ip_netif-> content < IP_MIN_CONTENT ){555 printf( "Maximum transmission unit %d bytes is too small, at least %d bytes are needed\n", ip_netif-> content, IP_MIN_CONTENT );556 ip_netif-> content = IP_MIN_CONTENT;565 ERROR_PROPAGATE( nil_packet_size_req( ip_netif->phone, ip_netif->device_id, & ip_netif->packet_dimension )); 566 if( ip_netif->packet_dimension.content < IP_MIN_CONTENT ){ 567 printf( "Maximum transmission unit %d bytes is too small, at least %d bytes are needed\n", ip_netif->packet_dimension.content, IP_MIN_CONTENT ); 568 ip_netif->packet_dimension.content = IP_MIN_CONTENT; 557 569 } 558 570 index = ip_netifs_add( & ip_globals.netifs, ip_netif->device_id, ip_netif ); … … 577 589 return ENOENT; 578 590 } 579 netif-> content = mtu;591 netif->packet_dimension.content = mtu; 580 592 printf( "ip - device %d changed mtu to %d\n\n", device_id, mtu ); 581 593 fibril_rwlock_write_unlock( & ip_globals.netifs_lock ); … … 768 780 pq_release( ip_globals.net_phone, packet_get_id( packet )); 769 781 }else{ 770 packet = ip_split_packet( packet, netif->p refix, netif->content, netif->suffix, netif->addr_len, error );782 packet = ip_split_packet( packet, netif->packet_dimension.prefix, netif->packet_dimension.content, netif->packet_dimension.suffix, netif->packet_dimension.addr_len, error ); 771 783 if( packet ){ 772 784 nil_send_msg( netif->phone, netif->device_id, packet, SERVICE_IP ); … … 891 903 return ERROR_CODE; 892 904 case NET_IL_PACKET_SPACE: 893 ERROR_PROPAGATE( ip_packet_size_ req( 0,IPC_GET_DEVICE( call ), IPC_SET_ADDR( answer ), IPC_SET_PREFIX( answer ), IPC_SET_CONTENT( answer ), IPC_SET_SUFFIX( answer )));905 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 ))); 894 906 * answer_count = 3; 895 907 return EOK; … … 900 912 } 901 913 902 int ip_packet_size_req( int ip_phone, device_id_t device_id, size_t * addr_len, size_t * prefix, size_t * content, size_t * suffix ){ 914 int ip_packet_size_req( int ip_phone, device_id_t device_id, packet_dimension_ref packet_dimension ){ 915 if( ! packet_dimension ) return EBADMEM; 916 return ip_packet_size_message( device_id, & packet_dimension->addr_len, & packet_dimension->prefix, & packet_dimension->content, & packet_dimension->suffix ); 917 } 918 919 int ip_packet_size_message( device_id_t device_id, size_t * addr_len, size_t * prefix, size_t * content, size_t * suffix ){ 903 920 ip_netif_ref netif; 904 921 int index; … … 914 931 netif = ip_netifs_get_index( & ip_globals.netifs, index ); 915 932 if( netif ){ 916 if( netif-> addr_len > * addr_len ) * addr_len = netif->addr_len;917 if( netif->p refix > * prefix ) * prefix = netif->prefix;918 if( netif-> suffix > * suffix ) * suffix = netif->suffix;933 if( netif->packet_dimension.addr_len > * addr_len ) * addr_len = netif->packet_dimension.addr_len; 934 if( netif->packet_dimension.prefix > * prefix ) * prefix = netif->packet_dimension.prefix; 935 if( netif->packet_dimension.suffix > * suffix ) * suffix = netif->packet_dimension.suffix; 919 936 } 920 937 } … … 927 944 return ENOENT; 928 945 } 929 * addr_len = ( netif-> addr_len > IP_ADDR ) ? netif->addr_len : IP_ADDR;930 * prefix = netif->p refix + IP_PREFIX;931 * suffix = netif-> suffix + IP_SUFFIX;946 * addr_len = ( netif->packet_dimension.addr_len > IP_ADDR ) ? netif->packet_dimension.addr_len : IP_ADDR; 947 * prefix = netif->packet_dimension.prefix + IP_PREFIX; 948 * suffix = netif->packet_dimension.suffix + IP_SUFFIX; 932 949 } 933 950 fibril_rwlock_read_unlock( & ip_globals.netifs_lock );
Note:
See TracChangeset
for help on using the changeset viewer.